我收集了一组PDF文件,其中包括扫描的图像,然后进行了OCR处理。文本仍然以“图形”的形式显示--换句话说,扫描的图像文本仍然存在--而OCR处理的文本则位于图像的“后面”。这允许搜索文档,复制文本等。
由于OS X中的一个令人讨厌(现已解决)的错误,一些OCR的文本已损坏。因此,我想从PDF中删除文本,并重新对文档进行OCR。出于许多重要的原因,我不想走“将文档重新打印为PDF”的路线:我更愿意尝试并尽可能就地修复文档。
由于我找不到一个能完成我所要求的功能的PDF工具,而且我又有一些编程经验,所以我决定卷起袖子,试着拼凑一些.NET (C#)代码来删除文本。
我看过iTextSharp,我可以打开一个示例文档,但我遇到的问题是发现(因此,删除)文档中的文本。我看过各种不同的PDF规范文档,但我很快就迷失了方向,所有我见过的iTextSharp示例都涉及到向文档中添加对象、图形或文本。
总而言之,我想要做的就是找到所有的文本块并删除它们,而不去管图形(最初是JPG)图像。谁能告诉我我应该寻找什么对象类型,以及我应该迭代通过什么层次结构来实现这一点?
发布于 2014-03-22 04:52:18
通过修改这个How to find and replace text in a existing PDF file with PDFTK (or other command line application),我能够使用pdftk和sed删除呈现的文本。这肯定不是完全通用的,但它是我需要的一个快速技巧。
我最终得到了:
pdftk my_input.pdf output - uncompress | sed -e 's/\[.*\]TJ/()Tj/' -e 's/(.*)Tj/()TJ/' | pdftk - output my_output.pdf compress这会将流转换为文本格式,在那里我找到了(blah)Tj和blahTJ的用法,并将它们完全剪掉,然后转换回压缩的二进制。pdftk做了一些魔术来修复输出,使其再次有效,因为原始的未经编辑的输入也是有效的PDF文件,但不是在编辑之后。如果没有一些新的模式,这将不适用于扩展字符。
发布于 2018-04-17 08:15:20
在Apple Preview中打印pdf似乎可以消除OCR的副作用。再加上Apple Script,你就有了一个自动化的解决方案。
发布于 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
复制相似问题