{
  "format": "agent-article-v0",
  "article_id": "EA-216",
  "canonical_url": "/tools/ea-216-oss-ocr",
  "page_type": "decision",
  "claim_ids": [],
  "evidence_ids": [
    "EVD-EA-216-URL-B32F7DB38A9B",
    "EVD-EA-216-URL-63804C21C767",
    "EVD-EA-216-URL-FC9637520597",
    "EVD-EA-216-URL-ACFE04B68940",
    "EVD-EA-216-URL-E4F8125543A0",
    "EVD-EA-216-URL-1DB235ADAAE4",
    "EVD-EA-216-URL-C519E58D07CF",
    "EVD-EA-216-URL-2B6D5708B4B6",
    "EA-216-R11-RESEARCH",
    "EA-216-R11-WEB-READBACK"
  ],
  "unknown_ids": [
    "EA-216-UNKNOWN-01"
  ],
  "operational_object_ids": [],
  "provider": [],
  "models": [],
  "plans": [],
  "surfaces": [],
  "regions": [],
  "current_status": "CURRENT",
  "observation_status": "SPEC_ONLY",
  "freshness": "CURRENT",
  "last_verified": "2026-10-04",
  "supersedes": [],
  "superseded_by": [],
  "provenance": [
    "EA-216-GAP-FIRST-20261004",
    "SRC-EA-216-URL-B32F7DB38A9B",
    "SRC-EA-216-URL-63804C21C767",
    "SRC-EA-216-URL-FC9637520597",
    "SRC-EA-216-URL-ACFE04B68940",
    "SRC-EA-216-URL-E4F8125543A0",
    "SRC-EA-216-URL-1DB235ADAAE4",
    "SRC-EA-216-URL-C519E58D07CF",
    "SRC-EA-216-URL-2B6D5708B4B6",
    "WEBBODY-EA0216-R8-85558413"
  ],
  "article_sources": [
    {
      "id": "EVD-EA-216-URL-B32F7DB38A9B",
      "evidence_class": "RESEARCH",
      "title": "[Tesseract](",
      "href": "https://github.com/tesseract-ocr/tesseract",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-216-URL-B32F7DB38A9B"
      ],
      "supporting_locators": [
        "SOURCES",
        "- [Tesseract](https://github.com/tesseract-ocr/tesseract"
      ],
      "scope": "SOURCES",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-216-URL-63804C21C767",
      "evidence_class": "RESEARCH",
      "title": "[Tesseract quality](",
      "href": "https://tesseract-ocr.github.io/tessdoc/ImproveQuality.html",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-216-URL-63804C21C767"
      ],
      "supporting_locators": [
        "SOURCES",
        "- [Tesseract quality](https://tesseract-ocr.github.io/tessdoc/ImproveQuality.html"
      ],
      "scope": "SOURCES",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-216-URL-FC9637520597",
      "evidence_class": "RESEARCH",
      "title": "[Tessdata](",
      "href": "https://github.com/tesseract-ocr/tessdata",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-216-URL-FC9637520597"
      ],
      "supporting_locators": [
        "SOURCES",
        "- [Tessdata](https://github.com/tesseract-ocr/tessdata"
      ],
      "scope": "SOURCES",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-216-URL-ACFE04B68940",
      "evidence_class": "RESEARCH",
      "title": "[PaddleOCR pipeline](",
      "href": "https://github.com/PaddlePaddle/PaddleOCR/blob/main/docs/version3.x/pipeline_usage/OCR.en.md",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-216-URL-ACFE04B68940"
      ],
      "supporting_locators": [
        "SOURCES",
        "- [PaddleOCR pipeline](https://github.com/PaddlePaddle/PaddleOCR/blob/main/docs/version3.x/pipeline_usage/OCR.en.md"
      ],
      "scope": "SOURCES",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-216-URL-E4F8125543A0",
      "evidence_class": "RESEARCH",
      "title": "[PP-OCRv5](",
      "href": "https://github.com/PaddlePaddle/PaddleOCR/blob/main/docs/version3.x/algorithm/PP-OCRv5/PP-OCRv5.en.md",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-216-URL-E4F8125543A0"
      ],
      "supporting_locators": [
        "SOURCES",
        "- [PP-OCRv5](https://github.com/PaddlePaddle/PaddleOCR/blob/main/docs/version3.x/algorithm/PP-OCRv5/PP-OCRv5.en.md"
      ],
      "scope": "SOURCES",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-216-URL-1DB235ADAAE4",
      "evidence_class": "RESEARCH",
      "title": "[OCRmyPDF](",
      "href": "https://github.com/ocrmypdf/OCRmyPDF",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-216-URL-1DB235ADAAE4"
      ],
      "supporting_locators": [
        "SOURCES",
        "- [OCRmyPDF](https://github.com/ocrmypdf/OCRmyPDF"
      ],
      "scope": "SOURCES",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-216-URL-C519E58D07CF",
      "evidence_class": "RESEARCH",
      "title": "[OCRmyPDF PDF security](",
      "href": "https://github.com/ocrmypdf/OCRmyPDF/blob/main/docs/pdfsecurity.md",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-216-URL-C519E58D07CF"
      ],
      "supporting_locators": [
        "SOURCES",
        "- [OCRmyPDF PDF security](https://github.com/ocrmypdf/OCRmyPDF/blob/main/docs/pdfsecurity.md"
      ],
      "scope": "SOURCES",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-216-URL-2B6D5708B4B6",
      "evidence_class": "RESEARCH",
      "title": "[Surya](",
      "href": "https://github.com/datalab-to/surya",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-216-URL-2B6D5708B4B6"
      ],
      "supporting_locators": [
        "SOURCES",
        "- [Surya](https://github.com/datalab-to/surya"
      ],
      "scope": "SOURCES",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EA-216-R11-RESEARCH",
      "evidence_class": "RESEARCH",
      "title": "EA-216 監査済みresearch / canonical revision binding",
      "supports": [
        "|対象|役割と採用時の境界|\n|---|---|\n|Tesseract|OCR engine。language packとpage segmentation、前処理を固定します。jpn/jpn_vertモデルの所在と実runtimeの導入状態は別です。|\n|PaddleOCR|orientation/unwarping/検出・認識等のpipeline。current general OCR docsはv3〜v6を含みます。v5の日本語・縦書きの作者報告を全世代やOCR-VLへ外挿しません。|\n|OCRmyPDF|検索可能PDFとOCR text layerを作るpipeline。Tesseractとlang packに依存し、独立した認識engineの比較枠にはしません。PDF再生成と文字・表の意味保持を別検証します。|\n|Surya|current世代はOCR/layout/読み順/tableを扱うVLM系です。vllmまたはllama.cpp backend、codeとmodelの利用条件を別確認します。旧forkの条件をcurrentへ転用しません。|"
      ],
      "limit": "canonical監査・revision bindingの存在を示す。外部ソースcurrentnessが本文またはcontrol-planeで確定していない場合は、currentnessをUNKNOWNのまま保持する。",
      "checked_at": "2026-10-04",
      "origin_class": "AUDITED_CANONICAL_RESEARCH_PACKET",
      "source_or_experiment_ids": [
        "EA-216-GAP-FIRST-20261004"
      ],
      "supporting_locators": [
        "EA-216-GAP-FIRST-20261004",
        "content/staging/EA-216.md"
      ],
      "scope": "監査済みEA本文・canonical revision・既存Source Graph relationの範囲。欠損currentnessは推測で閉じない。",
      "provenance_status": "AUDIT_PASS_CANONICAL_BINDING"
    },
    {
      "id": "EA-216-R11-WEB-READBACK",
      "evidence_class": "IMPL",
      "title": "EA-216 Web body identity / canonical readback",
      "supports": [
        "canonical staging bodyのSHA-256一致とR9 canonical ledger readbackをProduction projectionの入力として検証する。"
      ],
      "limit": "body identity/readbackは本文claim自体の真偽や外部ソースの最新性を追加保証しない。",
      "checked_at": "2026-10-04",
      "origin_class": "IMPLEMENTATION_READBACK",
      "source_or_experiment_ids": [
        "WEBBODY-EA0216-R8-85558413"
      ],
      "supporting_locators": [
        "WEBBODY-EA0216-R8-85558413",
        "content/staging/EA-216.md",
        "EA-216-GAP-FIRST-20261004"
      ],
      "scope": "R9/R10 canonical readback後のProduction生成時body identity。",
      "provenance_status": "CANONICAL_READBACK_BODY_HASH_MATCH"
    }
  ],
  "research_sections": [
    {
      "heading": "PUBLIC_CLAIM",
      "text": "OCRは文字認識、layout・表処理、PDF再生成の役割を分けて選定します。文字の存在だけで読み順や数値を正しいと判断せず、モデルと設定を固定し、業務素材のgoldenへ照合します。"
    },
    {
      "heading": "ESTABLISHED",
      "text": "|対象|役割と採用時の境界|\n|---|---|\n|Tesseract|OCR engine。language packとpage segmentation、前処理を固定します。jpn/jpn_vertモデルの所在と実runtimeの導入状態は別です。|\n|PaddleOCR|orientation/unwarping/検出・認識等のpipeline。current general OCR docsはv3〜v6を含みます。v5の日本語・縦書きの作者報告を全世代やOCR-VLへ外挿しません。|\n|OCRmyPDF|検索可能PDFとOCR text layerを作るpipeline。Tesseractとlang packに依存し、独立した認識engineの比較枠にはしません。PDF再生成と文字・表の意味保持を別検証します。|\n|Surya|current世代はOCR/layout/読み順/tableを扱うVLM系です。vllmまたはllama.cpp backend、codeとmodelの利用条件を別確認します。旧forkの条件をcurrentへ転用しません。|"
    },
    {
      "heading": "LOCAL_OBSERVATION_AND_COUNTEREVIDENCE",
      "text": "Tesseract5.3.4 eng、OEM1、PSM3/6、DejaVu Sansで生成したEnglish PNG3素材の限定試験を行いました。NFC＋空白除去後のCERで、大文字・句読点・数字差を残しています。これは実業務・日本語・他engineのbenchmarkではありません。\n\n|素材|PSM3 CER|PSM6 CER|結果の範囲|\n|---|---:|---:|---|\n|単段4行|0|0|生成した既知の文字と数字は一致|\n|二段|0.423077|0.423077|左段全文→右段全文のgolden順序に不一致|\n|6度の傾き|0.134615|0.115385|123.45が123-45に変化|\n\nprocess完了を内容品質の全PASSと扱いません。数字変化と読み順崩れは、OCR出力を業務値へ無照合で渡せない反証です。CERはこの素材・model・設定だけの観測です。blankは空出力が正解でしたが、非空素材の空出力と区別します。jpnはpack欠落errorで、日本語・縦書きは未実測です。"
    },
    {
      "heading": "INFERENCE",
      "text": "source hash、engine/package/model/hash、language、前処理、PSM、device/backend、layout/order/table、raw output、CER/WER・numeric・順序edge・PDF差分、warnings/time/RSS、ACL、overrideを受入記録に残す設計を提案します。共通標準や実装済み制御ではありません。"
    },
    {
      "heading": "FAILURE_ENVELOPE",
      "text": "傾き・汚れ・低解像度、日英混在・縦書き、複数段、罫線・merged/multi-page table、数式、empty output、missing-language、backend/model依存、text layerの座標ずれを評価します。作者の異なるdataset/metric/deviceの数値を揃えず横断順位にしません。PDF/Aやrepairを原文同一・署名保持・安全化の保証と扱いません。"
    },
    {
      "heading": "AVAILABILITY_GATES",
      "text": "日本語/縦書きの必要model、採用generation、hardware/runtime、依存・model license、素材送信可否、業務閾値を確定します。PaddleOCR、Surya、OCRmyPDFは本候補では実行していません。GPU要否はengine名で一括判断せず、選んだmodel/backendで確認します。"
    },
    {
      "heading": "SECURITY_PRIVACY_AUDIT_OPERABILITY",
      "text": "PDFは複雑な入力です。OCRmyPDFの作者資料もsanitizerではないと説明しています。低権限process、CPU/RSS/timeout/page/画像dimension上限、egressとmodel供給を制御します。本文命令をtool authorityへ移さず、raw image/PIIを不要にlogへ残しません。sourceと出力PDF/text/構造のACLを揃えます。"
    },
    {
      "heading": "UNKNOWN_AND_STOP_CONDITION",
      "text": "日本語・縦書き、他engineとの同一corpus精度、PDF/A・署名・座標差分、実業務latency/RSS、採用model条件、組織閾値は未確認です。役割比較と再現可能な限定実測までを研究範囲とし、本番の順位・推奨は確定していません。"
    },
    {
      "heading": "SOURCES",
      "text": "確認日: 2026-10-04。repo main/current docsは可変です。\n\n- [Tesseract](https://github.com/tesseract-ocr/tesseract)\n- [Tesseract quality](https://tesseract-ocr.github.io/tessdoc/ImproveQuality.html)\n- [Tessdata](https://github.com/tesseract-ocr/tessdata)\n- [PaddleOCR pipeline](https://github.com/PaddlePaddle/PaddleOCR/blob/main/docs/version3.x/pipeline_usage/OCR.en.md)\n- [PP-OCRv5](https://github.com/PaddlePaddle/PaddleOCR/blob/main/docs/version3.x/algorithm/PP-OCRv5/PP-OCRv5.en.md)\n- [OCRmyPDF](https://github.com/ocrmypdf/OCRmyPDF)\n- [OCRmyPDF PDF security](https://github.com/ocrmypdf/OCRmyPDF/blob/main/docs/pdfsecurity.md)\n- [Surya](https://github.com/datalab-to/surya)"
    }
  ],
  "human_url": "/tools/ea-216-oss-ocr",
  "markdown_url": "/agent/article.md?path=%2Ftools%2Fea-216-oss-ocr",
  "json_url": "/agent/article.json?path=%2Ftools%2Fea-216-oss-ocr"
}