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