以编程方式检查PDF文件是否完全扫描的最佳方法是什么? 我有iText和PDFBox供我使用。我可以检查pdf文件是否包含文本,并根据结果来确定此文件是否为OCR,但此解决方案不是100%准确。我想知道是否有另一种方法可以解决这个问题。
如您所知,解决方案必须基于Java。
答案 0 :(得分:3)
您最好的选择可能是检查它是否有文字,还可以查看它是否包含大页面图像或大量覆盖页面的平铺图像。如果您还检查元数据,则应涵盖大多数选项。
答案 1 :(得分:1)
恕我直言,你无法确定。但你可以尝试一些东西,如寻找文本,尝试OCR pdf,并根据识别的文本数量决定,你可以寻找一些基本的扫描错误,如淡出或纸/书边距。
答案 2 :(得分:1)
您可以使用Quick PDF Library Lite中的HasFontResources函数检查PDF是否包含任何字体资源(很好地指示文档是否包含任何字体) - 一个免费的ActiveX组件,您可以使用它从理论上讲,在第三方插件的帮助下从Java中使用。
检查文本/字体资源是确定是否可以从扫描过程生成PDF的最准确方法。再加上马克斯蒂芬斯建议寻找大页面大小的图像等等。
但不幸的是,没有任何100%保证准确的方法来检查PDF是否被扫描。
答案 3 :(得分:0)
您是否了解如何扫描文档,如果是的话?虽然“Creator”元数据项不是强制性的,但如果您的扫描仪设置它,它可能是一个有用的线索。
答案 4 :(得分:0)
我只是按尺寸判断。扫描的文件不合理。直到1000页,我的经验法则是,真实文本pdf:1-20 M,扫描的可以达到30到100 M.
答案 5 :(得分:0)
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文件。