function ApplyOcrSearchLayer(
const Provider: IPdfOcrProvider;
const Options: TPdfOcrOptions;
out Report: TPdfOcrReport;
const CancellationToken: IPdfCancellationToken = nil): Boolean;
库通过 PDFium 渲染每个选中的页面,并把一张紧凑的自上而下 popfBgra32 图像传给 IPdfOcrProvider.RecognizePage
提供方返回 TPdfOcrWord 值,其 Quad 坐标使用像素单位,原点位于图像左上角
文本置信度必须处于 0 到 1 范围内,四边形顶点必须留在提供的图像内部
FPDF_DeviceToPage 映射保留页面框和固有旋转FPDF_TEXTRENDERMODE_INVISIBLE 的原生文本对象TPdfOcrReport 汇总 ProcessedPageCount、FailedPageCount、DetectedWordCount、InsertedWordCount、RejectedWordCount 和 TotalRenderedPixels,而每个 TPdfOcrPageReport 条目还会附加每页的 ImageWidth、ImageHeight、DetectedWordCount、InsertedWordCount 和 RejectedWordCountFirstPage 和 LastPage 选择一个闭区间范围,0 则表示文档边界
SkipPagesWithText 避免重复已有的可搜索文本层,ContinueOnError 控制页面级恢复
在页面变更之前以失败关闭方式强制执行的预算包括 MaxPixelsPerPage 和 MaxTotalPixels 像素、MaxWordsPerPage 和 MaxTotalWords 单词数、每个单词的 MaxWordCharacters 字符数,以及置信度和 DPI
var
Options: TPdfOcrOptions;
Report: TPdfOcrReport;
begin
Options := TPdfOcrOptions.Default;
Options.Dpi := 300;
Options.MinConfidence := 0.75;
if Pdf1.ApplyOcrSearchLayer(OcrProvider, Options, Report) then
Pdf1.SaveAs('searchable.pdf');
end;