10

以编程方式检查 PDF 文件是否为完全扫描文件的最佳方法是什么?我确实可以使用 iText 和 PDFBox。我可以检查一个 pdf 文件是否包含文本,并根据结果来决定这个文件是否是 OCRed,但这个解决方案并不是 100% 准确的。我想知道是否有另一种方法来解决这个问题。

如您所知,该解决方案必须基于 Java。

4

6 回答 6

4

您最好的选择可能是检查它是否有文本,并查看它是否包含一个大的页面大小的图像或许多覆盖页面的平铺图像。如果您还检查元数据,这应该涵盖大多数选项。

于 2010-03-09T08:52:30.530 回答
1

您可以使用Quick PDF Library Lite中的 HasFontResources 函数检查 PDF 是否有任何字体资源(一个很好的指示文档是否包含任何字体)——一个免费的 ActiveX 组件,理论上可以从 Java 中使用在第三方插件的帮助下。

检查文本/字体资源是确定 PDF 是否可能从扫描过程中生成的最准确方法。再加上马克斯蒂芬斯建议寻找大页面大小的图像等。

但不幸的是,没有任何 100% 保证准确的方法来检查 PDF 是否被扫描。

于 2010-03-09T09:50:43.910 回答
1

恕我直言,您无法确定这一点。但是您可以尝试一些操作,例如查找文本、尝试对 pdf 进行 OCR 并根据已识别文本的数量决定,您可以查找一些基本的扫描错误,例如淡出或纸张/书籍页边距。

于 2010-03-08T18:52:21.457 回答
1
find ./ -name "*.pdf" -print0 | xargs -0 -I {} bash -c 'export file="{}"; if [ $(pdffonts "$file" 2> /dev/null | wc -l) -lt 3 ]; then echo "$file"; fi'

说明:如果 pdf 包含文本,pdffonts file.pdf 将显示超过 2 行。输出所有不包含文本的 pdf 文件的文件名,扫描的 PDF 也是如此。

于 2016-10-14T06:10:30.627 回答
0

我只是根据大小来判断。扫描文件过大。对于直到 1000 页,我的经验法则是,真文本 pdf:1-20 M,扫描的可以达到 30 到 100 M。

于 2010-03-09T09:08:37.517 回答
0

Do you have any knowledge of how the document would have been scanned, if it was? While the "Creator" metadata item is not mandatory, it could possibly be a useful clue if your scanner sets it.

于 2010-03-08T20:23:40.527 回答