我在写硕士论文- NLP系统。我有一个部件-萃取器。
它从PDF文件中提取纯文本。有几个PDF文件无法正确提取。提取器(PDFBox库)返回如下字符串:
“┤xDn║if\d d├gDF”Ti&cD╬lh d f his~n╗xd f“d┤ffih”
或
"10a61a91a22a25a3a27a17a23a20a8a13a14a61a25a17“
我是检查每个文件,使这个提取的问题,所有这些文件的文本也不能复制粘贴从PDF (Adobe和FoxIt阅读器)。在这个阅读器中查看它们是启用的,但是在选择它的内容并复制到剪贴板之后,我得到了相同的错误文本(如上面所描述的--不语义正确的字符字符串或数字和字母字符串)。
有人能帮我吗?
发布于 2011-06-21 12:26:58
在这种情况下,如果您不能选择,从Acrobat (Reader)窗口复制‘n’粘贴文本,那么还有另一个选项可以工作:
您将拥有文件中所有页面的所有文本,并且需要定位您最初想要复制‘n’粘贴的位置--这并不像直接复制‘n’粘贴那么舒服。但它更可靠..。
它也适用于Linux上的acroread (但您必须选择“另存为文本.”在“文件”菜单中)。
更新
您可以使用pdffonts命令行实用工具对PDF使用的字体进行快速分析。
下面是一个示例输出,它演示了文本提取问题很可能发生在哪里。它使用GitHub-储存库中的一个手工编码的PDF文件,该文件的创建目的是提供具有良好注释且可以在文本编辑器中轻松打开的PDF示例文件:
$ pdffonts textextract-bad2.pdf
name type encoding emb sub uni object ID
------------------------------- ------------ ----------- --- --- --- ---------
BAAAAA+Helvetica TrueType WinAnsi yes yes yes 12 0
CAAAAA+Helvetica-Bold TrueType WinAnsi yes yes no 13 0如何解释这个表?
BAAAAA+和CAAAAA+名称前缀以及sub列中的yes条目所示),Helvetica和Helvtica-Bold。TrueType类型的。WinAnsi编码(字体编码映射、PDF源代码中使用的字符标识符到应该绘制的象形文字)。但是,只有字体/Helvetica在/ToUnicode中有可用的/ToUnicode表(对于/Helvetica-Bold没有),如uni-column中的yes/no所示。需要/ToUnicode表来提供从字符标识符/代码到字符的反向映射。
特定字体缺少的/ToUnicode表几乎总是一个确定的指示符,表明使用此字体的文本字符串无法从PDF中提取或复制“n”。(即使存在一个/ToUnicode表,文本提取仍可能造成问题,因为该表可能会损坏、不正确或不完整--就像许多真实的文件中所显示的,以及上面链接的GitHub存储库中的几个附带文件所演示的那样。)
发布于 2010-05-28 08:34:51
如果能够成功地选择和复制Adobe中的文本--表明PDF确实包含文本对象--但是如果您不能将复制的文本粘贴到记事本中,除非它看起来像一堆垃圾字符,那么问题可能与所选文本使用的CMap有关。
PDF规范为显示文本内容与文本内容的相关提取提供了许多选项。CMap指定从字符代码到字符选择器的映射。PDF规范概述了一些预定义的CMaps,但也可以嵌入其他CMaps。
我的猜测是,该文本的CMap已经损坏,或者PDFBox库不支持这个特定的CMap。我建议尝试一个不同的SDK,看看你是否得到了任何不同的结果。
发布于 2016-02-28 15:10:30
当在Chrome (内部PDF浏览器)中作为Gmail附件打开时,复制会复制正常可读的字符!
当我遇到这个问题和对其他人也是时,它对我起了作用。我认为Chrome浏览器自动使用谷歌硬盘OCR ..。就像魔法一样!
https://stackoverflow.com/questions/2926159
复制相似问题