Python 3.x 解析PDF时错误解码Devanagiri字体

Python 3.x 解析PDF时错误解码Devanagiri字体,python-3.x,pdf,python-camelot,Python 3.x,Pdf,Python Camelot,我用它来解析印度不同州发布的预算文件。解析进行得很好,但Devanagari(印地语、马拉地语等语言)的解析输出与文档中的不同。输入文件处于链接状态,解析后的输出文件处于链接状态。可以看出,Devanagari字符与输入文件中的字符不对应。MWE如下所示 import camelot tables = camelot.read_pdf('Demand_ Estimate.pdf', flavor='stream') tables[0].to_csv('demand_estimate.csv')

我用它来解析印度不同州发布的预算文件。解析进行得很好,但Devanagari(印地语、马拉地语等语言)的解析输出与文档中的不同。输入文件处于链接状态,解析后的输出文件处于链接状态。可以看出,Devanagari字符与输入文件中的字符不对应。MWE如下所示

import camelot
tables = camelot.read_pdf('Demand_ Estimate.pdf', flavor='stream')
tables[0].to_csv('demand_estimate.csv')

这在印度语PDF中相当常见,请参见,例如,以及从那里链接的其他问题。检查示例PDF表明,手头的问题确实与那些重复问题中的问题相同-其中字体的ToUnicode表将多个外观不同的字形映射到同一Unicode代码点。因此,文本提取(依赖于这些表)总是会返回这样的错误结果。作为测试,您可以从Adobe Reader应用简单的复制和粘贴,在您的情况下,它也会返回相同的错误结果。除非您尝试实现自己的文本提取器(该提取器试图依赖其他通常无意义的信息),否则您必须尝试OCR。对于任何感兴趣的人,我们设法找到了一种解决方法,将pdf转换为图像,然后获取csv文件。根据文档的不同,它可能起作用,也可能不起作用。对我们来说,它适用于我们的大多数文档。“将pdf转换为图像,然后获取csv文件”——我想这将是通过OCR获取的。是的。我应该补充一点。我们用tesseract做的