解析PDF文件

时间:2011-07-09 21:38:19

标签: parsing pdf

我发现很难解析用非英语语言创建的pdf文件。我使用了pdfbox和itext,但在那里找不到任何可以帮助解析这个文件的东西。这是我正在谈论的pdf文件:http://prapatti.com/slokas/telugu/vishnusahasranaamam.pdf pdf说它创建的是使用LaTeX和Tikkana字体。我的机器上安装了Tikkana字体,但这没有帮助。请帮助我。

谢谢,K

1 个答案:

答案 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条目),以便这些文本提取器可以正常工作,或者只是从流中抓取字节并自己翻译它们

工作流程将是这样的:

  1. 对于表单中使用的字体中的每个字符:
    1. 使用相同的LaTeK / GhostScript版本将其渲染为PDF。
    2. 打开PDF并找到该特定已知角色的CharProc。
    3. 将该流与用于构建它的已知字符一起存储。
  2. 对于要解释的PDF中的每个文本字节。
    1. 根据现有编码数组获取给定字节的字形名称
    2. 获取该字形名称的“char proc”流,并将其与已知的char procs进行比较。
  3. 注意:这可以通过一些缓存重写为更高效,但它可以实现这个想法(我希望)。

    所有这些都需要对PDF和所涉及的解析方法有相当深入的了解。但它可能会奏效。可能不会......