gpt4 book ai didi

java - 确定 PDF 页面是包含文本还是纯图片

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:48:46 25 4
gpt4 key购买 nike

Java如何判断一个PDF页面是包含文字还是纯图片?

我搜索了很多论坛和网站,但我找不到答案。

能否从PDF中提取文本,判断页面是图片格式还是文本格式?

PdfReader reader = new PdfReader(INPUTFILE);  
PrintWriter out = new PrintWriter(new FileOutputStream(OUTPUTFILE));
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
// here I want to test the structure of the page !!!! if it's possible
out.println(PdfTextExtractor.getTextFromPage(reader, i));
}

最佳答案

没有防水的方法可以做你想做的。

文本在 PDF 文件中可以以不同的方式出现。例如:可以使用图形状态运算符而不是使用文本状态来绘制所有字形。 (如果您觉得这听起来像中文,我很抱歉,但我可以向您保证这是正确的 PDF 语言。)

如果一个涵盖最常见情况并且偶尔会遗漏异国情调 PDF 的临时解决方案对您来说没问题,那么您已经有了一个很好的第一个解决方法。

在您的代码中,您遍历所有页面,并询问 iText 页面上是否有任何文本。这已经是一个很好的迹象。

在内部,您的代码正在使用 RenderListener 接口(interface)。 iText 解析页面内容并触发特定 RenderListener 实现中的方法。这是自定义实现的实现:MyTextRenderListener .此自定义实现用于 ParsingHelloWorld示例。

还有一个 renderImage() 方法(例如参见 MyImageListener )。如果触发了这个方法,你可以100%确定页面中还有一个Image,你可以使用ImageRenderInfo对象来获取图片的位置、宽度和高度(即: 如果您知道如何解释 getImageCTM() 方法返回的 Matrix

使用所有这些元素,您已经可以很长一段时间来实现您的需求,但请注意,总会有奇特的 PDF 可以逃过您的所有检查。

关于java - 确定 PDF 页面是包含文本还是纯图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16570632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com