2

我正在尝试从使用 iText 生成的 pdf 文档中提取所有数据(例如正方形、矩形、线条等)。但我无法提取内容而不是文本和图像。我想提取图形组件上文提到的。

4

1 回答 1

2

似乎有3个选项(至少那些是我能找到的),我不知道你到底有什么,所以我会粘贴所有3个,这些难度越来越大)

第一个选项:你可以这样做:(取自这里)

PDDocument document = null; 
document = PDDocument.load(inFile); 
List pages = document.getDocumentCatalog().getAllPages();
Iterator iter = pages.iterator(); 
while (iter.hasNext()) {
            PDPage page = (PDPage) iter.next();
            PDResources resources = page.getResources();
            Map pageImages = resources.getImages();
            if (pageImages != null) { 
                Iterator imageIter = pageImages.keySet().iterator();
                while (imageIter.hasNext()) {
                    String key = (String) imageIter.next();
                    PDXObjectImage image = (PDXObjectImage) pageImages.get(key);
                    image.write2OutputStream(/* some output stream */);
                }
            }
}

第二种选择可能是将您的 PDF 文档转换为 HTML,使用此处显示的内容,然后JSoup用于处理 HTML 并迭代img标签,这就是我假设图像将被呈现的方式。

或者,您可以查看Hough Transform

霍夫变换是一种用于图像分析、计算机视觉和数字图像处理的特征提取技术。该技术的目的是通过投票程序在某一类形状中找到不完美的对象实例。

一个成像库,例如OpenCV应该能够产生这种开箱即用的功能(OpenCV-Java)是这种库的 Java 包装器。

这个例子应该为你指明正确的方向。

于 2013-10-18T05:27:25.073 回答