OCRmyPDF 如何处理混合扫描件用 --mode skip 跳过已有文字页【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF当一份 PDF 里既有已经带文字的页面born-digital 导出、之前跑过 OCR 的页面又有纯扫描图片页时直接运行 OCRmyPDF 不会按你预期的只处理扫描页进行默认模式下只要检测到某页已有文字程序会直接中止并报错。这类混合文档的正确处理方式是使用--mode skipv17.0.0 起提供短形式-m skip让已有文字的页面原样复制进输出文件只对扫描页执行图像处理和 OCR。问题现象默认模式遇到已有文字页会中止对一份已经包含文字层或 printable 文字的文件运行 OCRmyPDF 时会看到 docs/errors.md 中记录的错误ERROR - 1: page already has text! – aborting (use --force-ocr to force OCR)文档说明这是因为文件里已有 printable 文字或隐藏的 OCR 文字层而 OCRmyPDF 无法精确区分这两者。默认行为是退出不修改 PDF目的是避免对已 OCR 过或本来就是 born-digital 的文档重复处理。--mode的四种取值及行为在 docs/advanced.md 中有对照表ModeBehaviorLegacy equivalentdefaultError if text is found(no flag)forceRasterize all content and run OCR--force-ocrskipSkip pages with existing text--skip-textredoRe-OCR pages, stripping old OCR layer--redo-ocr执行用 --mode skip 处理混合文档ocrmypdf --mode skip input.pdf output.pdf # 或等价的短形式 ocrmypdf -m skip input.pdf output.pdf这里input.pdf/output.pdf替换为你自己的文件路径。文档给出的适用场景正是当前情况documents that contain both born digital and scanned content以及normalize and convert to PDF/A regardless of their contents。行为要点来自 docs/advanced.md 的 When OCR is skipped 一节对已有文字的页面不做任何图像处理也不做 OCR页面被原样复制到输出中对扫描页正常执行图像处理与 OCR生成文字层。版本与兼容性--mode参数自 v17.0.0 起加入旧的--skip-text、--force-ocr、--redo-ocr标志仍保留为静默别名可以继续工作。也就是说在 v17 之前的版本上可以用--skip-text达到相同效果docs/errors.md 中给出的三个选项仍是这些旧标志。结果验证文档明确了两条可用于核对输出结果的行为文字页原样保留带文字页被复制进输出 PDF 而不做修改所以其原有文字含 printable 文字与隐藏 OCR 层都还在输出文件里sidecar 文本只含新识别的文字如果同时使用--sidecar output.txt按 docs/cookbook.md 的说明sidecar 文件里只包含 OCRmyPDF 通过 OCR 找到的文字——If the document contains pages that already have text, that text will not appear in the sidecar。同理因--skip-big或--tesseract-timeout被跳过的页面也不会出现在 sidecar 中。如需核对输出文件的完整文字包括原本就有的文字层cookbook 建议用 Poppler 的pdftotext或pdfgrep这类工具从 PDF 中抽取文字来检查。限制与边界以下几点在源文档中有明确说明处理混合文档时需要留意触发条件只看有没有文字OCRmyPDF 无法区分 printable 文字与隐藏 OCR 层所以只要页面上检测到文字就会被 skip 跳过不会只跳过隐藏层。被超时/大图像跳过的页面不做 OCR--tesseract-timeout默认每页 180 秒超时或因--skip-big超限而被跳过的页面会without OCR插入输出docs/advanced.md Time and image size limits 一节。Tagged PDF 的结构树带/StructTreeRoot结构树的 PDF 默认也会被中止与含文字页同理--mode skip可以正常处理且文字页不被修改其 structural markup 得以保留。但注意只有当输出不转换为 PDF/A时该保留才成立——Ghostscript 10.x 在转换过程中会丢弃结构树。如果需要保证 Tagged PDF 的标记存活文档建议用--output-type pdf或安装 veraPDF 让 speculative PDF/A 转换绕开该问题。其他模式作为对照同一条混合文档路径上文档还给出了两个替代模式docs/errors.md、docs/advanced.md用于--mode skip不满足需求的场合# 重做 OCR移除旧的文字层invisible OCR 文本后重新识别 # printable 矢量文字不参与 OCR因此也可用于数字扫描混合文件 ocrmypdf --mode redo input.pdf output.pdf # 强制 OCR所有页面栅格化为图像丢弃隐藏 OCR 文本 ocrmypdf --mode force input.pdf output.pdfredo适合想利用 OCR 引擎改进来重跑旧文字层的情况force会把一切内容含表单字段、交互对象压平成视觉表示会丢弃矢量内容。对于只想给扫描页加文字层、不动已有文字页的目标--mode skip是文档中对应的主路径。【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考