Codex引き継ぎ: 日本語特化 構造化OCR(rtx-worker MCPツール)
前提: decisions/0008 決定4(OCR序列)、0012(OA優先だが複写物・非公開資料の テキスト化は別途必要)。実行は rtx-worker(RTX3080)。
目的
Marker/surya(レイアウト)+NDLOCR(日本語文字認識)を合体し、PDF/画像→ 構造化Markdownを高精度で出す。rtx-worker上のサービスとして動かし、oa-mcpの rtx_run/新規MCPツール rtx_ocr から叩けるようにする。
設計(2段構成)
入力: PDF or 画像dir。出力: 構造化Markdown+ブロックJSON(座標・種別・テキスト)。
- 前処理:
pdftoppmでページ画像化(複写PDFはスキャン画像なのでこの経路)。 - 速い経路(既定、現代印刷向け): marker単体(surya OCR含む)でMarkdown化。 DSM-5-TR・現代論文はこれで十分な想定。
- 高精度経路(
--ndl、古い/縦書き/劣化 向け):- surya の layout+reading-order でブロック検出(見出し/本文/表/図)
- 各ブロック画像をcrop → NDLOCR-Lite で日本語認識(縦書き・旧字に強い)
- surya構造 + NDLOCRテキストで構造化Markdown再構成
- Markerは公式のOCR差し替え口が無いため、surya出力を直接使う自前グルーで組む
- 後段: 出力を R2
sources/<citekey>/fulltext.txt(複写物はcopies/規約に留意、 全文を公開物・リポジトリに置かない)。
rtx-worker実装
compose/ocr-structured.yml(新規): CUDA torch + marker + surya + NDLOCR-Lite。 モデルDLは初回のみ、以後キャッシュ(状態レス原則: キャッシュは使い捨て、 データ正典はR2)。VRAM 10GBに収まる構成にする(surya/marker/NDLは軽量)。- MCPツール
rtx_ocr(pdf_r2_path, mode="fast|ndl", citekey)(oa-mcpに追加): 内部で rtx_wake → rtx_run で ocr-structured サービスを起動しOCR→R2出力。
検証
- DSM-5-TR複写(現代印刷)でfast経路、NDLOCRサンプル(旧字・縦書き)でndl経路を それぞれ通し、構造化Markdownの見出し・表・読み順を目視確認。
- 精度比較(fast vs ndl)を1資料で取り、どちらを既定にするか判断材料に。
注意
- 複写物(DSM・判タ)は非公開。OCRテキスト・中間画像を公開repoに置かない。
- 大きいモデルDL・処理はrtx-worker側(/tmpでなくホーム/作業dir。vps sandboxの クォータ問題を避ける)。
- パイプライン必須経路に入れない(rtx-workerはオンデマンド)。