• altair823 released this 2026-08-29 03:12:23 +00:00 | 0 commits to main since this release

    얇은 검출 박스 하나가 그 이미지의 OCR 결과를 통째로 날리던 문제(#239)를 고쳤다. 사용자 표면(명령·플래그·config 키·wire 스키마)에는 변화가 없다.

    무엇이 문제였나. paddle-onnx 는 검출한 글자 영역을 하나씩 인식 네트워크에 넣는데, 아주 얇은 영역(표 선 조각, 글자 사이 틈, 사진의 가는 무늬)이 하나라도 섞이면 ONNX 런타임이 세션 실행 전체를 실패시켰고, 그 오류가 위로 전파되면서 같은 이미지에서 그때까지 인식해 둔 결과까지 전부 버려졌다. 색인은 "성공"으로 끝나므로 그 문서를 검색해 0 건이 나올 때까지 아무 신호가 없었다.

    원인은 폭 하한이 없다는 것이었다. 인식 출력의 타임스텝 수가 ceil((폭 - 4) / 8) 이라 폭 4 이하에서 0 이 되고 거기서 Conv 가 터진다. 이제 폭 5 미만은 네트워크에 넣지 않고 그 박스만 버린다.

    실측 (도그푸딩 말뭉치 이미지 240 개 파일, 같은 모델·같은 설정):

    수정 전 수정 후
    OCR 성공 204 / 240 240 / 240
    OCR 실패 36 (15.0%) 0

    되살아난 본문 합계 11,747 자. charts/Clickpath_Analysis.png 은 박스를 119 개 검출하는데 수정 전에는 3 개를 인식한 시점에 세션이 죽어 본문이 0 자였고, 수정 후 87 개 영역 1,116 자가 나온다. 원래 성공하던 204 장은 인식 글자 수가 한 장도 변하지 않았다.

    업그레이드 전에 읽을 것. parser_version 이 올라가(image-meta-v1→v2, pdf-text-v2→v3) 다음 kebab ingest 가 기존 이미지·PDF 를 자동 재처리한다. --force-reingest 는 필요 없지만 비용이 든다 — 모든 이미지·PDF 문서의 doc_id 가 바뀌고 store 가 다시 쓰이며, paddle-onnx 를 쓰지 않는 지식 베이스도 같은 비용을 낸다. 그리고 피해 규모를 세려면 색인하기 전에 세야 한다(bump 가 문서 행을 다시 쓰므로 색인 후에는 0 이 나온다).

    절차·질의·주의사항 전문은 docs/release-notes/v0.33.1-draft.md 에 있다. 실측 evidence 는 tasks/HOTFIXES.md 의 2026-08-28 항목.

    영향 범위. paddle-onnx 를 이미지 OCR 엔진으로 고를 수 있게 된 v0.28.0 이후 모든 릴리스가 이 결함을 갖고 있었다.

    검증. 워크스페이스 1301 passed / 0 failed / 64 ignored, cargo clippy --workspace --all-targets -- -D warnings 무경고. PR #240 은 5 회차 리뷰를 거쳐 지적��� 19 → 16 → 3 → 1 → 0 으로 수렴했다.

    Downloads