Files
kebab/crates/kebab-parse-pdf/tests/fixtures/scanned_page2_truth.txt
altair823 48197687b7 test(pdf): integration smoke (w/ search + cancel) + vector regression + alnum e2e (#[ignore]) for v0.20 sub-item 1
Step 9 (Group I) of v0.20.0 sub-item 1 (scanned PDF OCR) plan.

I3 — crates/kebab-app/tests/ingest_pdf_ocr_smoke.rs (신규):
- ingest_with_mock_ocr_yields_pdf_ocr_summary — `#[ignore]` real Ollama,
  ingest_with_config production path + IngestItem.pdf_ocr_pages verify.
- ocr_text_indexed_and_searchable — `#[ignore]` real Ollama, app.search
  의 OCR text indexed verify (§ Acceptance #2).
- ingest_with_cancel_aborts_mid_pdf — production cancel chain (pre-set
  cancel=true + dummy endpoint, no panic/deadlock verify).

I4 — crates/kebab-parse-pdf/tests/text_extractor_regression.rs (신규):
- vector_pdf_extract_byte_identical_to_baseline — F4 mojibake.pdf 의 vector
  PDF path canonical 의 byte-identical 보존 (Step 1-8 모든 변경 전후 invariant).
- baseline 신규 = tests/snapshots/vector_pdf_canonical.json (first run create).
- normalize_provenance_timestamps inline helper (R-3 mitigation, workspace
  전체 부재 — 신규 12-line).

I5 — crates/kebab-parse-pdf/tests/ocr_e2e.rs (신규):
- f1_alnum_accuracy_ge_85 / f2_alnum_accuracy_ge_70 — `#[ignore]` real
  Ollama qwen2.5vl:3b, § Acceptance §9 #3 의 implementation.
- alnum metric = strsim::levenshtein (dev-dep 추가).
- truth file copy from PoC scratch (page1.txt + page2-batchim.txt) →
  scanned_page1_truth.txt + scanned_page2_truth.txt.
- kebab-parse-image dev-dep 추가 (OllamaVisionOcr::from_parts 호출용).
  parser isolation invariant 의 dev-dep exception (spec §3.1, dep graph
  baseline -e normal 보존).

spec:  docs/superpowers/specs/2026-05-27-pdf-scanned-ocr-spec.md
plan:  docs/superpowers/plans/2026-05-27-pdf-scanned-ocr-plan.md (Step 9 I3+I4+I5)
prior: c9e0594 (Step 8 CLI printer)
contract: §9

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 10:10:58 +00:00

54 lines
3.2 KiB
Plaintext

한국어 OCR 의 받침 처리 정확도 측정용 page
본 페이지는 Tesseract 의 "Detected diacritics" 경고가 가리키는 받침 (종성)
인식 약점을 isolate 측정하기 위한 fixture 입니다.
1. 단순 받침 모음
- 단일 자음: 각, 간, 갈, 감, 갑, 갓, 강, 낙, 난, 날, 남, 납, 낫, 낭
- 받침 ㄱ: 학생, 식당, 약속, 작품, 음악, 책방, 박사, 직업, 목표, 적극적
- 받침 ㄴ: 친구, 인생, 운명, 분야, 단어, 관심, 인간, 진리, 안녕, 인사
- 받침 ㄷ: 받침, 듣다, 닫다, 굳다, 곧, 뜻, 멋, 옷, 짓다, 맺다
- 받침 ㄹ: 알다, 살다, 일상, 길이, 발음, 별명, 졸업, 길거리, 일요일
- 받침 ㅁ: 그림, 사람, 마음, 점심, 봄, 새벽, 검사, 점점, 다음, 처음
- 받침 ㅂ: 입학, 답안, 합격, 잡지, 컵, 밥, 십대, 압력, 깁스, 갈증
- 받침 ㅅ: 옷, 곳, 멋, 짓, 벗, 깃, 갓, 빗, 솟, 첫째, 갓길, 옷장
- 받침 ㅇ: 영화, 강의, 정답, 평균, 동물, 풍경, 송별, 응원, 항상, 통화
- 받침 ㅈ: 낮, 빛, 옻, 갖다, 빚, 짓, 맞다, 잊다, 좇다, 갖춤, 짖다
- 받침 ㅊ: 꽃, 빛, 낯, 숯, 옻, 닻, 빚, 갖, 닻, 쫓다, 옻나무, 닻줄
- 받침 ㅋ: 들녘, 부엌, 들녘길, 부엌일, 들녘 풍경
- 받침 ㅌ: 밭, 솥, 끝, 곁, 팥, 받, 솥뚜껑, 밭일, 끝없다, 팥죽
- 받침 ㅍ: 잎, 숲, 옆, 짚, 늪, 깊다, 갚다, 높다, 옆자리, 무릎
- 받침 ㅎ: 좋다, 많다, 끊다, 닿다, 옳다, 잃다, 싫다, 뚫다, 놓다, 쌓다
2. 겹받침 (이중 자음)
- ㄳ: 몫, 삯, 넋, 몫이, 삯을, 넋이
- ㄵ: 앉다, 얹다, 앉아, 얹어, 앉으니
- ㄶ: 많다, 끊다, 괜찮다, 않다, 많이, 끊임없이
- ㄺ: 닭, 흙, 칡, 읽다, 굵다, 늙다, 닭고기, 흙길
- ㄻ: 삶, 닮다, 굶다, 옮기다, 곪다, 삶의, 닮은
- ㄼ: 넓다, 짧다, 얇다, 떫다, 넓이, 짧게, 얇은
- ㄽ: 외곬, 외곬으로 (드문 받침)
- ㄾ: 핥다, 훑다, 핥아, 훑어, 핥는
- ㄿ: 읊다, 읊어, 읊는 (드문)
- ㅀ: 잃다, 싫다, 끓다, 닳다, 뚫다, 잃어, 싫어
- ㅄ: 값, 없다, 가엾다, 값이, 없이, 가엾은
3. 한자 + 한글 받침 혼용
大韓民國의 韓國語는 表音文字 한글로 表記한다. 學生은 學校에서 工夫하고
先生님은 講義하신다. 古代 朝鮮의 文化는 中國과 日本에 影響을 주었다.
經濟學者들은 物價 上昇을 警告한다. 國民은 政府의 政策을 信賴해야 한다.
이 문장의 받침이 한자와 함께 정확히 인식되는지가 중요한 측정 지표다.
4. 받침 의미 변화 예시
- 산다 (live) vs 산 (mountain) vs 살다 (live) vs 살 (flesh)
- 가다 (go) vs 간 (liver) vs 갔다 (went) vs 강 (river)
- 먹다 (eat) vs 먹 (ink stick) vs 먹었다 (ate) vs 멍 (bruise)
- 보다 (see) vs 본 (origin) vs 봤다 (saw) vs 봄 (spring)
받침 한 글자 차이로 의미 완전 변경 → OCR 정확도가 검색 결과 직결.
5. 외래어 받침
- 마이크, 컴퓨터, 인터넷, 텔레비전, 라디오, 카메라, 스피커
- 시스템, 프로그램, 데이터, 알고리즘, 인공지능, 머신러닝
- 박테리아, 바이러스, 백신, 안티바이러스, 방화벽
- 파일, 폴더, 디렉토리, 다운로드, 업로드, 백업