仕様と制約
OCR(ocr_pdf.py)
- 既定: PDF埋め込み画像をネイティブ解像度で抽出 +
gundam(タイル分割)+ bf16 + eager attention。
- 密なページ(縦書きなど)は低解像度だと反復崩壊するため、高解像度をタイル分割で渡す。
- 見開き(横長)は左右に分割し、縦書きは右→左で処理。
--start N でレジューム(既存mdに追記)。
- bf16 / 4bit いずれも対応(6GBでも実用)。flash-attn は使わない。
反復の停止(repetition.py)
- 生成中に同一 n-gram の多数回出現を検知して
generate を停止する。
クリーンアップ(cleanup.py)
- 除去: 純数字行(ノンブル・行番号)、行内ノンブル、ページを跨いで繰り返す柱。
- 整形: 短い非文末行を
## 見出しに、本文をリフローして段落化、節番号 [14]「2」を脚注参照 [^14] として保持。
- 検出: 崩壊/短文ページに印を付け、末尾に一覧を出す(自動削除はしない)。
- 特定の本に依存しない汎用ロジック。
--min-chars で崩壊判定の閾値を調整。
制約
- 見出し推定はヒューリスティックで、柱の誤OCRや短い断片を拾うことがある。
- 段落境界はOCR出力に残らないため、見出し+節番号での粗い段落化に留まる。
- 表・リストは Free OCR 出力に存在しないため付かない。
- 文字レベルのOCR誤りは補正しない。