ApplyOCRTextLayerEx
OCR、文本、文档编辑
描述
验证与提供程序无关的 OCR JSON,在独立缓冲区中准备不可见文本,并将自有可搜索文本层提交到一个页面
语法
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 | 一基目标页面 |
|---|---|
| ResultJSON | ApplyOCRTextLayer 描述的 version-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 | 输入、几何、选项、字体编码或层写入失败 |
备注
未知的选项位会被拒绝
源坐标使用渲染图像的左上角原点与所选渲染框;页面旋转与非零框偏移会映射回原始 PDF 用户空间
可选的 baseline 数组以源单位包含 [x1, y1, x2, y2],用于定义文本方向与步进;完整基线不得同时携带非零的 textAngle
每个词边界与基线都会在置信度过滤之前检查;无效的低置信度单词仍会导致操作失败
字体适配与缺失字形处理会在新内容层提交之前完成;不会用部分绘制的 OCR 单词替换旧层
只有同时具有 /PDFlibOCROwner /PDFlibPas、/PDFlibOCRType /InvisibleText 和 /PDFlibOCRVersion 1 这三个精确字段的流才是自有 OCR 层
替换会创建新的 contents 数组与新流,保留非自有内容以及兄弟页面使用的流
OCR 层使用渲染模式 3 与独立图形状态;放置会在应用单词矩阵之前取消保留内容的当前变换矩阵
空的接受结果会保持旧层不变;使用 GetOCRDiagnosticsJSON 区分 empty、skipped、appended 与 replaced
保存并重新加载文档后会验证可搜索性与可见像素未发生变化
另请参阅
OCRPageEx、OCRDocumentEx、ConfigureTesseractOCR、GetOCRDiagnosticsJSON、LastOCRError