java - 使用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?
解决方案
有几个库可以帮助您实现这一目标。
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)
OCRMyPDF - 是一个用 python 编写的独立工具,具有更多用于预处理和图像校正的功能。然而,我无法让它为我的目的工作,因为我想要一个 Python 库(而不是命令行工具)并且不喜欢它的某些部分具有 AGPL 许可。
还有一些其他维护的工具只进行文本提取。您还可以使用一些 python 包装器来自己构建自己的 tesseract 库。
推荐阅读
- c++ - 使用矩阵的坏点变换 (Direct3D)
- environment - chroot 环境中的 groff
- reactjs - 一个组件改变它的道具?
- javascript - 如何访问动态创建的
- javascript中的元素?
- python - Selenium 遍历元素并在满足特定条件时单击该元素
- android - 在设置数据之前计算recyclerview中的最大itemview高度(onBindViewHolder)
- ios - 如何在 Xcode 11 中为 iOS 应用程序调试 Objective C
- python - Python BeautifulSoup 抓取;如何组合两个不同的字段,或根据站点中的位置对它们进行配对?
- xamarin - Xamarin ControlTemplate 触发器应用于模板内的内部控件
- java - 无法将图片上传到 Firebase Cloud Storage