首页 > 解决方案 > 使用python或java将不可见文本添加到pdf以制作可搜索的pdf

问题描述

我有一个包含图像的 PDF(扫描文档)。我还从每个页面中提取了文本及其位置。我需要将此文本添加到图像后面的原始页面中,以使原始 PDF 可搜索。

我正在寻找任何可以帮助实现它的开源库,最好使用 python 或 java。

下面的链接讨论了 pdfbox,但没有讨论如何在图像下编写它 PdfBox 2.0.0 在页面中的给定位置写入文本

PDDocument newPdf = PDDocument.load(sourcePdfFile);
PDPage firstPage=newPdf.getPage(0);
PDFont pdfFont= PDType1Font.HELVETICA_BOLD;
int fontSize = 14;
PDPageContentStream contentStream = new 
PDPageContentStream(newPdf, 
firstPage, PDPageContentStream.AppendMode.APPEND,true,true);
contentStream.setFont(pdfFont, fontSize);
contentStream.beginText();
contentStream.newLineAtOffset(200,685);
contentStream.showText("John");
contentStream.endText();
contentStream.close(); // don't forget that one!

是否可以像上面那样使用 pdfbox,而不是给出 fontSize 等。将它写在图像(不可见)下以启用可搜索的 pdf?

标签: javapython

解决方案


有几个库可以帮助您实现这一目标。

  1. Ocrusrex - 一个简单的 Python 工具,用于获取 PDF,通过 Tesseract 4 OCR 运行它并返回可搜索的 PDF。它可以单线程或多线程运行。完全公开,这是我的一个小项目,我一直在使用企业有利的许可证(MIT 或 Apache 许可而不是 GPL 或 AGPL)来完成这项任务。您需要先安装 Tesseract 4。

    然后安装库

     pip3 install ocrusrex
    

    您可以像这样运行该工具:

    from OCRUSREX import ocrusrex
    ocrusrex.Multithreaded_OCRPDF(source="Path to source pdf", targetPath="Path to target pdf", verbose=True)
    
  2. OCRMyPDF - 是一个用 python 编写的独立工具,具有更多用于预处理和图像校正的功能。然而,我无法让它为我的目的工作,因为我想要一个 Python 库(而不是命令行工具)并且不喜欢它的某些部分具有 AGPL 许可。

还有一些其他维护的工具只进行文本提取。您还可以使用一些 python 包装器来自己构建自己的 tesseract 库。


推荐阅读