我收集了一组PDF文件,其中包括扫描的图像,然后进行了OCR处理。文本仍然以“图形”的形式显示--换句话说,扫描的图像文本仍然存在--而OCR处理的文本则位于图像的“后面”。这允许搜索文档,复制文本等。
由于OS X中的一个令人讨厌(现已解决)的错误,一些OCR的文本已损坏。因此,我想从PDF中删除文本,并重新对文档进行OCR。出于许多重要的原因,我不想走“将文档重新打印为PDF”的路线:我更愿意尝试并尽可能就地修复文档。
由于我找不到一个能完成我所要求的功能的PDF工具,而且我又有一些编程经验,所以我决定卷起袖子,试着拼凑一些.NET (C#)代码来删除文本。
我看过iTextSharp,我可以打开一个示例文档,但我遇到的问题是发现(因此,删除)文档中的文本。我看过各种不同的PDF规范文档,但我很快就迷失了方向,所有我见过的iTextSharp示例都涉及到向文档中添加对象、图形或文本。
总而言之,我想要做的就是找到所有的文本块并删除它们,而不去管图形(最初是JPG)图像。谁能告诉我我应该寻找什么对象类型,以及我应该迭代通过什么层次结构来实现这一点?
发布于 2019-06-17 17:30:06
我简单明了的回答是:
好吧,至于我在这里回答的第一个问题(我在这里花了很多时间寻找答案),我正在使用ubuntu18.04,我OCRd了一个pdf文件。它看起来很好,但是有了图像..显然,我(也许你也是)使用的ocr建议添加一层文本,这样你就可以在文件中搜索文本……https://github.com/coherentgraphics/cpdf-binaries <--答案所需的二进制文件!
因此,在我对文件执行OCRd之后,我通过以下命令使用了cpdf二进制文件:
"cpdf -draft ./MySourcePDF.pdf -o MyFinalPdf.pdf“
..。从文档中:
“-draft选项从文件中删除位图(照片)图像,以便可以用较少的墨水打印它。也可以选择添加-boxes选项,用一个表示图像所在位置的划线框填充空白区域。这不能保证在所有情况下都是完全可见的(位图可能已被矢量对象部分覆盖或在原始文件中被裁剪)。例如:
cpdf -draft -boxes in.pdf -o out.pdf...“
所以我没有使用-boxes选项。之后,我只需使用LibreOffice抽屉打开文件并将其导出为PDF。实际上,你可以在那里做更多的事情。希望我能帮助别人不要经历我今天所做的事情:8个小时试图修复一个与我分享生活的人的OCR PDF文件…
我最终开始尝试用LibreOffice打开PDF,但过程太快了,电脑变得无法使用。
https://stackoverflow.com/questions/20176614
复制相似问题