我发现很难解析用非英语语言创建的pdf文件。我使用了pdfbox和itext,但在那里找不到任何可以帮助解析这个文件的东西。这是我正在谈论的pdf文件:http://prapatti.com/slokas/telugu/vishnusahasranaamam.pdf pdf说它创建的是使用LaTeX和Tikkana字体。我的机器上安装了Tikkana字体,但这没有帮助。请帮助我。
谢谢,K
答案 0 :(得分:4)
当你说“解析PDF文件”时,我的第一个想法是所讨论的PDF没有在各种PDF查看器和&图书馆,因此在某种程度上是腐败的。
但事实并非如此。它在Acrobat Reader X中打开很好。然后我在页面上看到了文本。
当我从第一页复制/粘贴该文本时,我得到:
UUP {¨¶ðQ{P {¨| = {PUU {¨>üb¶úN}升{d {P {¨> >Ûpû¶bp{¨} | = / }pT¶=} Nm的{Z {UPD {M}a¾Ú}熔点{Ú¶¨>ztNð{øÔ_c}米{d¢A} = N { Nzt¶ztbm}¥Ázv¬b¢Á ÁÛûÁøÛûzÏrze¨= ztTzv}lÛzt{¨d¨c} p {Ðu{¨½ÐuÛ½{=ÛÁ{=ÁÁÁûb}ßb{q {d} p {¨ze= Vm {Ðu½Û{=Á
那是来自读者。
本PDF中的大部分文字都是使用各种“Type 3”字体编写的。这些字体声称使用“WinAnsiEncoding”(也称为代码页1252),带有“差异”数组。这个差异数组是错误的:
47 / BB 61 / BP / BQ 81 / C6 ......
第一个数字是要替换的代码点,第二个是替换该代码点原始值的字符名称。
没有像BB,BP,BQ,C9这样的角色名称等等。因此,当您复制粘贴该文本时,您将获得上述垃圾。
对不起,从这种PDF中提取文本的唯一可靠方法是OCR(光学字符识别)。
呃......远射的想法:
如果您可以找到用于生成此PDF的特定字体的特定版本,您可以通过这种方式确定转换为Type 3字体的已知字符的实际流内容。
获得这些已知流后,您可以将它们与PDF中的流进行比较,并使用它来构建自己的转换表。
您可以修复现有的PDF [s](通过更改编码字典中的名称和Type 3 charproc条目),以便这些文本提取器可以正常工作,或者只是从流中抓取字节并自己翻译它们
工作流程将是这样的:
注意:这可以通过一些缓存重写为更高效,但它可以实现这个想法(我希望)。
所有这些都需要对PDF和所涉及的解析方法有相当深入的了解。但它可能会奏效。可能不会......