JSON / C ABI ジョブでの外部 OCR
ocr.layer 操作は builtin-ascii、tesseract-cli、tesseract-dll、rapidocr-cli、rapidocr-dll を受け付けます。engine を省略すると内蔵 ASCII デフォルトが維持されます
ケイパビリティー検出はこれらの対応アダプターを一覧しますが、実行ホストに外部プログラム、ライブラリー、言語データ、ONNX モデルがインストールされていることは主張しません
Tesseract の例
{"schemaVersion":1,"type":"ocr.layer","pages":[0],"dpi":300,
"minimumConfidence":0.7,"skipPagesWithText":true,"replaceExisting":false,
"engine":"tesseract-cli",
"engineOptions":{"executablePath":"C:/OCR/tesseract.exe",
"tessDataDirectory":"C:/OCR/tessdata","language":"eng",
"pageSegMode":6,"engineMode":3,"timeoutMilliseconds":30000,
"maxPixels":16777216}}
このオブジェクトをファイルジョブの operations 配列に置いて input / output パスを追加するか、ロード済みハンドルとバイナリー / 結果コールバックつきで hpdf_document_execute_json_v1 に直接渡してください
| エンジン | 必須 engineOptions | 省略可能 engineOptions |
|---|---|---|
| builtin-ascii | なし | engineOptions は欠落または空オブジェクトでなければなりません |
| tesseract-cli | executablePath、tessDataDirectory | language、pageSegMode、engineMode、timeoutMilliseconds、maxPixels |
| tesseract-dll | libraryPath、tessDataDirectory | language、pageSegMode、engineMode、timeoutMilliseconds、maxPixels |
| rapidocr-cli | pythonExecutable、bridgeScript、modelDirectory | detectionModel、recognitionModel、classificationModel、characterDictionary、fontPath、useAngleClassifier、intraOpThreads、interOpThreads、timeoutMilliseconds、maxPixels |
| rapidocr-dll | libraryPath、modelDirectory | language、detectionModel、recognitionModel、classificationModel、characterDictionary、useAngleClassifier、rightToLeft、threads、timeoutMilliseconds、maxPixels |
オプションとローカルリソース
外部エンジンはオブジェクト値の明示的な engineOptions を要求します。未知のキー、不正な JSON 型、NUL を含むパス / 言語文字列、空の必須値は拒否されます
Tesseract のデフォルトは language=eng、pageSegMode=3、engineMode=3 です。セグメンテーションモード 0 と 2 はテキストを認識しないため拒否され、それ以外の 13 までのモードは受け付けられます
engineMode は 0〜3 を受け付けます。trained-data ファイルは選択されたモードに対応しなければならず、eng+fra のような多言語 Tesseract 言語式には対応するローカルモデルが必要です
RapidOCR CLI はネイティブの THPDFRapidOCROptions.Default モデル名を使い、両スレッド上限のデフォルトは 1 です。明示的に指定された辞書 / フォントパスを受け付け、設定されたブリッジはローカル TSV コントラクトを実装しなければなりません
RapidOCR DLL は THPDFRapidOCRDLLOptions.ForLanguage(language) で開始し、デフォルトは ch です。言語プロファイルが認識モデル、辞書、読み方向を選び、明示的なオプションがそれらの選択を上書きできます
モデルファイル名はネイティブアダプターに従って modelDirectory の下で解決されます。ライブラリーのビット数はホストプロセスと一致しなければならず、CLI エンジンは別のローカルプロセスとして動きます
これらのリソースは明示的に用意して選択してください。操作はエンジンのインストール、モデルのダウンロード、任意の実行ファイルの検索、リモート OCR サービスの利用をしません
予算とキャンセル
timeoutMilliseconds のデフォルトは 60,000 で、1〜3,600,000 の整数を受け付けます。実効アダプタータイムアウトは budget.timeMilliseconds で上限付けられます
maxPixels のデフォルトは 16,777,216 で、1〜67,108,864 の整数を受け付けます。実効上限は要求値、budget.pixels、budget.memoryBytes / 16 の最小値です
実効エンジンピクセル上限は、認識前の OCR ページレンダリングも制限します。単語・コンテンツ・UTF-16 テキスト予算は操作のメモリー許容量で上限付けられます
これらの上限は設定されたバッファーと操作リソースを制限するものです。外部 DLL のモデル割り当ては厳密なプロセス RSS クォータではありません
ネイティブ呼び出しはレンダリングと認識に Document.OperationCancellationToken を借用します。C コールバックのキャンセルは協調的な操作・入力・出力チェックポイントでポーリングされ、実行中の外部エンジンはタイムアウトか次のコールバックチェックポイントまで続くことがあります
ローカル CLI 失敗、不正 / 不完全な TSV 出力、アダプタータイムアウトは操作を拒否します。設定された操作時間 / ピクセル上限は構造化された予算失敗区分を保持します
出力とトランザクション挙動
結果は engine、recognizedPages、skippedPages、acceptedWords、droppedWords を報告します。engine フィールドはネイティブアダプターの説明的な名前を含みます
minimumConfidence は 0〜1 の数値でなければならず、skipPagesWithText と replaceExisting は JSON ブールでなければなりません
受け入れられた Unicode 単語は、ToUnicode マッピングとソースページジオメトリーつきの不可視テキストになります。スキャン画像は出力に残り、呼び出し側が意図的に同じファイルパスへ公開しない限りソースファイルは不変です
ファイルジョブは失敗時に既存宛先を保存し、同一ディレクトリーのステージングファイル経由で公開します。C ABI の変更は PDF バイトと JSON 結果の配信が両方成功した後にコミットされ、失敗時はロールバックし、すでに配信されたバイトは呼び出し側が破棄します
受け入れ
Tests/Delphi/Run-JobOCRTests.ps1 は、4 つのアダプターディスパッチプロファイル、不正な設定、ピクセル / 経過時間予算、部分単語拒否、プロセス失敗、タイムアウト、宛先 / ソース保持を Win32 / Win64 で実行します
実際の Tesseract 実行ファイルとモデルパスを渡すとライブ認識が演習されます。独立した pypdf / MuPDF リーダーが Unicode 検索可能テキストと変更なしの可視スキャンピクセルを検証し、オプションの実際の Win64 ABI DLL チェックが部分コールバックと失敗操作ロールバックを検証します
ドキュメント操作、Tesseract アダプター、ローカル RapidOCR モデル、ネイティブ RapidOCR ライブラリー、検索可能 OCR テキストレイヤーを参照してください