我在Android中使用PDFBox从文档中提取文本时遇到了一些问题。但解析器似乎工作正常(或者至少,这就是我解释它的意思;谷歌搜索“解析= COSObject”没有给出相关的结果,不幸的是(对于某些文件,logcat是垃圾邮件,似乎没有办法关掉这个投入))。 getCharactersByArticle返回此文档的空输出,即。 vectorlistoftps是空的。
我已将文档上传到:https://ufile.io/cnvoq
对于我尝试过的大多数其他文档,文本提取工作正常,或者我得到与此无关的错误。但不是在这里。
以下是相关的代码段。
private void extractTextPosition() throws FileNotFoundException, IOException {
FileInputStream stream = new FileInputStream(var1);
PDFParser parser = new PDFParser(stream);
parser.parse();
Log.d("Parser has ","parsed");
StringWriter outString = new StringWriter();
CustomPDFTextStripper stripper = new CustomPDFTextStripper();
stripper.setStartPage(currentPage);
stripper.setEndPage(currentPage);
stripper.setSortByPosition(true);
try {
stripper.writeText(parser.getPDDocument(), outString);
} catch (Exception e) {
e.printStackTrace();
}
Vector<List<TextPosition>> vectorlistoftps = stripper.getCharactersByArticle();
}
CustomPDFTextStripper与PDFTextStripper相同(我更改了它,但所有更改都已被注释掉)。
感谢任何帮助。
答案 0 :(得分:1)
相关PDF不包含任何文字。
好的,当你看它时,你会看到文字字形,但它们实际上并不是使用文本绘图命令绘制的(它采用某些编码中的字符串并绘制匹配的字形)而是每个字母字形使用单独的矢量图形操作绘制(移动到,行到,曲线到,填充......)。
(您也无法在Adobe Reader中复制和粘贴文本,甚至无法标记进行复制,因为根本没有要标记的文本。)
由PDFBox PDFTextStripper
(或其他PDF库的类似文本提取类)完成的文本提取仅适用于使用文本绘制命令通过解码其字符串参数绘制的文本。
您的PDF很可能需要OCR才能进行文本检索。