首页 文章

由于ToUnicode映射,PDF文本提取返回错误的字符

提问于
浏览
3

我试图使用PDFMiner从外语PDF文件中提取文本,但是被ToUnicode语句挫败了 . 即使在普通的PDF查看器下,该文件的行为也很奇怪 .

例如,以下是文件中某些文本的屏幕截图:

correct text

但是,如果我选择并复制文本,它看起来像这样:

िनरकर

您可以看到多个字符已更改,尤其是倒数第二个字符 .

毫不奇怪,PDFMiner提取不正确的文本 . 但每个PDF查看器都能正确显示这些数据 . 我怀疑问题是ToUnicode Map ,或者是带有连接字符的东西 . 所需的字母应该是0x915,0x94D,0x937的序列 . PDFMiner仅报告0x915,它描述了不同的字符 .

我需要做些什么才能让PDFMiner正确提取文本,即在图像中而不是复制粘贴文本?

这是link to the PDF有问题 .

1 回答

  • 6

    简而言之:

    您的PDF不包含在不使用OCR的情况下正确提取文本所需的信息 .

    详细地:

    PDF中嵌入的Mangal-Regular子集的字体程序中的 ToUnicode Map和Unicode条目都声称这四个字形

    Four glyphs claiming to be 0x915

    all代表相同的Unicode代码点0x915 .

    因此,任何不查看绘制的字形(即不尝试OCR)的文本提取程序将为这些字形中的任何一个返回0x915 .

    背景:

    您似乎想知道为什么PDF查看器正确显示文本但文本提取(复制和粘贴或PDFMiner)无法正确提取 .

    原因是作为格式的PDF不包含文本 . 它包含指向嵌入式字体程序中的字形绘制指令的指针(直接或通过映射) . 使用这些指针可以按预期绘制PDF .

    此外,它可以包含将此类字形指针映射到Unicode代码点的额外信息 . 这些额外信息由文本提取程序使用 . 对于PDF,这些映射不正确,因此提取的文本不正确 .

相关问题