ApplyOCRTextLayerEx
OCR、テキスト、ドキュメント編集
説明
プロバイダー中立の OCR JSON を検証し、別バッファで不可視テキストを準備して、所有の検索可能テキストレイヤーを 1 ページにコミットします
構文
Delphi
Function TPDFlib.ApplyOCRTextLayerEx(Page: Integer; Const ResultJSON,
FontName: WideString; MinConfidence: Double; Options: Integer): Integer;
ActiveX
Function PDFlib::ApplyOCRTextLayerEx(Page As Long, ResultJSON As String,
FontName As String, MinConfidence As Double, Options As Long) As Long
DLL
int DLApplyOCRTextLayerEx(int InstanceID, int Page, const wchar_t* ResultJSON,
const wchar_t* FontName, double MinConfidence, int Options);
int DLApplyOCRTextLayerExA(int InstanceID, int Page, const char* ResultJSON,
const char* FontName, double MinConfidence, int Options);
パラメータ
| Page | 1 から始まる対象ページ |
|---|---|
| ResultJSON | ApplyOCRTextLayer で説明されるバージョン 1 のスキーマ。検証済みのベースライン端点や階層 ID を含めてもかまいません |
| FontName | 埋め込み可能な TrueType フォント。インストール済みフォントからのフォールバック選択には空文字列を指定します |
| MinConfidence | 0~1 の包含単語信頼度しきい値 |
| Options | 後述のレイヤーポリシーのビットごとの組み合わせ。0 は新しい所有レイヤーの追加です |
オプション
| 1 — PDF_OCR_SKIP_EXISTING_TEXT | 保持されている非所有コンテンツストリームや呼び出された Form XObject にテキスト (不可視テキストを含む) がある場合、OCR を適用せずに成功を返します |
|---|---|
| 2 — PDF_OCR_REPLACE_OWNED_LAYER | ライブラリの OCR マーカーと完全に一致する既存レイヤーをすべて置き換えます。所有 OCR レイヤーがなければ追加します |
| 3 | 非所有テキストのあるページはスキップしつつ、所有レイヤーだけの OCR ページは置換を許します |
戻り値
| 1 | レイヤーがコミットされたか、既存テキストポリシーでページがスキップされたか、信頼度しきい値を満たす単語がありませんでした |
|---|---|
| 0 | 入力、ジオメトリ、オプション、フォントエンコーディング、レイヤー書き込みのいずれかが失敗しました |
備考
未知のオプションビットは拒否されます
ソース座標は描画画像の左上原点と選択された描画ボックス基準です。ページの回転と 0 でないボックスオフセットは、生の PDF ユーザー空間へ写像し直されます
オプションの baseline 配列はソース単位の [x1, y1, x2, y2] を含み、テキスト方向とアドバンスを定義します。完全なベースラインを持つ場合、0 でない textAngle も同時に持つことはできません
すべての単語境界とベースラインは、信頼度フィルタリングの前に検査されます。無効な低信頼度の単語があれば、その時点で操作は失敗します
フォントのフィッティングと欠落グリフの処理は、新しいコンテンツレイヤーのコミット前に完了します。中途半端に描画された OCR 単語が旧レイヤーを置き換えることはありません
所有 OCR レイヤーと見なされるのは、/PDFlibOCROwner /PDFlibPas、/PDFlibOCRType /InvisibleText、/PDFlibOCRVersion 1 の 3 つのフィールドすべてが正確に一致するストリームだけです
置換では新しい contents 配列と新しいストリームが作られ、非所有コンテンツと兄弟ページが使うストリームは保持されます
OCR レイヤーは描画モード 3 と分離されたグラフィックス状態を使います。配置では、単語マトリクスを適用する前に、保持コンテンツの現在の変換マトリクスをキャンセルします
受け付けられた空の結果は旧レイヤーをそのまま残します。empty、skipped、appended、replaced の区別は GetOCRDiagnosticsJSON で確認してください
検索可能性と可視ピクセルが変わらないことは、ドキュメントの保存と再読み込み後に検証されます
関連項目
OCRPageEx、OCRDocumentEx、ConfigureTesseractOCR、GetOCRDiagnosticsJSON、LastOCRError