Java 如何从在线pdf中提取照片和文本

Java 如何从在线pdf中提取照片和文本,java,pdf,text-extraction,image-extraction,Java,Pdf,Text Extraction,Image Extraction,我知道已经有了PDFbox和iText,但是它们没有视觉内容提取的能力,并且需要脱机使用pdf。还有,我想要一种在线提取文本和视觉内容的方法。不想下载pdf文件,然后做一些事情。Java语言有什么样的API或库 编辑对于那些认为不清楚的人,我将进一步解释: 想象一下,当使用任何HTML解析器时,您可以在线解析页面,创建DOM或SAX树,遍历它们的元素,然后根据这些树中节点的内容提取照片和文本。至少,对于照片,你可以得到相应的HTML标签,对于文本,同样的,你可以得到实际的文本。现在,我想知道PD

我知道已经有了
PDFbox
iText
,但是它们没有视觉内容提取的能力,并且需要脱机使用pdf。还有,我想要一种在线提取文本和视觉内容的方法。不想下载pdf文件,然后做一些事情。Java语言有什么样的API或库

编辑对于那些认为不清楚的人,我将进一步解释:


想象一下,当使用任何
HTML解析器
时,您可以在线解析页面,创建
DOM
SAX
树,遍历它们的元素,然后根据这些树中节点的内容提取照片和文本。至少,对于照片,你可以得到相应的HTML标签,对于文本,同样的,你可以得到实际的文本。现在,我想知道PDF是否也有类似的功能?在不下载的情况下浏览文本和图像可以做到这一点。有一个免费版本只有一个限制:它只能在单线程应用程序中使用。

Gnostice PDFOne(用于Java)有一种方法可以解析PDF页面中的文本和图像元素。PDF中的文本不像HTML或XML文档那样位于DOM中。文本只是以不同的x-y坐标出现,并且神奇地看起来格式良好。然而,PDFOne有一些方法可以将这些文本元素重构成用户友好的句子。披露:我在制作这个图书馆的公司工作。

我快速浏览了一下。它在线提取图像和文本吗?你是什么意思?给出一个场景,PDF不能像HTML那样工作。有了后者,一切都是联系在一起的。因此,图片的数据(几乎是!参见如favicons内联)从未包含在HTML文档中。对于前者,几乎所有东西都是“嵌入的”。如果不同时获取文档所显示图片的数据,则无法获取文档。请遵循前面的注释。HTML设计为在线查看。PDF被设计为独立的(甚至字体也可以嵌入)。实际上,PDF允许使用外部流或备用图像将图像数据存储在外部文件中。但这很不寻常。PDFBox可以提取文本和图像。当然,你必须下载PDF.visual content extraction-请解释一下你的意思。此外,你的线上线下解释似乎没有任何意义。@lonesome如果对brain来说太难处理的话-好吧,大脑知道html解析器在实际解析html之前下载html,每当它被要求解析在线html时,照片(除非base64 URL编码)是单独的文件。正如您所说,您不想下载,HTML解析器是您不想下载的示例。@尽管如此,由于PDF文件的特殊结构,确实不需要下载整个文件,例如仅检索单个页面的内容。不过,要使用部分文件检索,http服务器需要支持范围请求。在静态PDF的情况下,这种情况可能已经非常常见,但在动态(根据请求)生成的PDF几乎不起作用的情况下。@lonesome不在我的HDD上-下载可能在内存中,它不需要在光盘上。在PDFBox和iText中都可以直接或通过基于内存的流处理内存中的表示。Hotmail-不,我还没有使用过这项服务,所以我不知道它是否真的显示PDF或是将PDF转换成其他格式,然后逐页显示。尽管如此,要直接访问PDF,您需要下载其中的一部分,如果服务器不支持范围请求,您需要将整个PDF下载到内存或光盘中。“PDF中的文本不像HTML或XML文档那样位于DOM中。”我知道这一点,但我的意思是,如果有任何方法可以这样对待PDF文件。如果可能的话,不要下载整个pdf文件,做我在内存中解释过的事情。那么,这个库提供了这样的功能吗?getPageElements返回一个数组,可以像DOM数组一样迭代。您可以获取该数组中的所有页面元素,也可以仅获取文本元素、图像元素、表单字段或批注。PDFOne可以从内存流或字节数组加载PDF。因此,您需要将联机PDF加载到内存流或字节数组中。哦,听起来不错。我在网站上找不到任何具体的文档。你能告诉我在哪里可以买到吗?对于免费版本,我可以做这些图像和文本提取以及内存流的工作吗?getPageElements的链接向您展示了如何迭代页面元素。这个库的免费版本很久以前就发布了,我认为它没有getPageElements功能。