我正在尝试使用PDFMiner从外语PDF文件中提取文本,但是被ToUnicode语句挫败了。即使在普通的PDF查看器下,该文件也会表现得很奇怪。
例如,以下是文件中某些文字的屏幕截图:
但是如果我选择并复制文本,它看起来像这样:
िनरकर
您可以看到多个字符已更改,尤其是倒数第二个字符。
毫不奇怪,PDFMiner会提取错误的文本。但每个PDF查看器都能正确显示这些数据。我怀疑问题是ToUnicode地图,或者是带有连接字符的东西。所需的字母应该是0x915,0x94D,0x937的序列。 PDFMiner仅报告0x915,它描述了不同的字符。
我需要做些什么才能让PDFMiner正确提取文本,即在图像中而不是复制粘贴文本?
这是一个有问题的link to the PDF。
答案 0 :(得分:6)
简而言之:
您的PDF不包含在不使用OCR的情况下正确提取文本所需的信息。
详细说明:
PDF中Mangal-Regular嵌入子集的字体程序中的 ToUnicode Map和Unicode条目声称这四个字形
都表示相同的Unicode代码点,0x915。
因此,任何不查看绘制的字形(即不尝试OCR)的文本提取程序将为这些字形中的任何一个返回0x915。
背景:
您似乎想知道为什么PDF查看器正确显示文本但文本提取(复制和粘贴或PDFMiner)无法正确提取。
原因是作为格式的PDF不包含文本。它包含指向嵌入式字体程序中的字形绘制指令的指针(直接或通过映射)。 使用这些指针可以按预期绘制PDF。
此外,它可以包含将此类字形指针映射到Unicode代码点的额外信息。这些额外信息由文本提取程序使用。 如果是PDF,这些映射不正确,因此提取的文本不正确。