Flap에서는 pdf 시험지 형태만으로도 문항을 쉽게 업로드할 수 있습니다.

시험지에서 문항을 추출하기

시험지 형태의 pdf 파일에서 문항 번호를 인식하여, 자동으로 문항을 잘라 저장합니다.

image.png

OCR을 진행하기

각각의 문항에 대해 OCR을 진행합니다.

<aside> <img src="notion://custom_emoji/73413ba9-d27a-4339-a6be-c33cd108002b/1383ba9f-e72c-808f-acc1-007a6d323d11" alt="notion://custom_emoji/73413ba9-d27a-4339-a6be-c33cd108002b/1383ba9f-e72c-808f-acc1-007a6d323d11" width="40px" />

곡선 $y = \\log_{16}(8x + 2)$ 위의 점 $A(a, b)$와 곡선 $y = 4^{x-1} - \\frac{1}{2}$ 위의 점 $B$가 제$1$사분면에 있다. 점 $A$를 직선 $y=x$에 대하여 대칭이동한 점이 직선 $OB$ 위에 있고 선분 $AB$의 중점의 좌표가 $(\\frac{77}{8}, \\frac{133}{8})$일 때, $a \\times b = \\frac{q}{p}$이다. $p+q$의 값을 구하시오. (단, $O$는 원점이고, $p$와 $q$는 서로소인 자연수이다.)

</aside>

메타 데이터 생성하기

메타 데이터 생성은 Gemini 3 flash 모델을 이용하여 수행됩니다.

각각의 문항에 대해 단원 > 주제 > 키워드 순으로 단계적으로 생성됩니다. 만약 어떤 문항이 수학 1 과목이면, 지수함수와 로그함수, 수열 등 해당하는 과목의 주제 중에서만 선택하도록 단계별로 구성되어 있습니다.

아래는 Flap에서 사용하는 단원, 주제, 키워드와 그에 대한 설명을 갖는 수학 과목의 Ontology로, 논의를 통해 원하는 내용으로 Custom 할 수 있습니다.

MATH_ONTOLOGY: Dict[str, Dict[str, Dict[str, List[str]]]] = {
    "수학Ⅰ": {
        "지수함수와 로그함수": {
            "지수와 로그": ["거듭제곱근", "지수법칙", "로그", "상용로그"],
            "지수함수와 로그함수": [
                "지수함수의 그래프",
                "로그함수의 그래프",
                "지수함수와 로그함수의 활용",
            ],
        },
        "삼각함수": {
            "삼각함수": [
                "일반각",
                "호도법",
                "삼각함수의 정의",
                "사인함수와 코사인함수의 그래프",
                "탄젠트함수의 그래프",
                "사인법칙",
                "코사인법칙",
            ],
        },
        ...
}

UNIT_DESCRIPTIONS: Dict[Tuple[str, str], str] = {
    (
        "수학Ⅰ",
        "지수함수와 로그함수",
    ): "지수와 로그의 성질, 함수 그래프, 실생활 활용을 학습합니다.",
    ("수학Ⅰ", "삼각함수"): "삼각함수의 정의, 그래프, 삼각법을 익히고 적용합니다.",
    (
        "수학Ⅰ",
        "수열",
    ): "등차·등비수열과 수열의 합, 수학적 귀납법을 통해 규칙성을 이해합니다."
}

위의 문항은 지수함수의 그래프, 로그함수의 활용, 지수함수와 로그함수의 활용 키워드로 분류되었습니다.