【问题标题】:Parsing PDF files解析 PDF 文件
【发布时间】:2011-07-09 21:38:19
【问题描述】:

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

谢谢,K

【问题讨论】:

    标签: parsing pdf


    【解决方案1】:

    当您说“解析 PDF 文件”时,我的第一个想法是相关 PDF 没有在各种 PDF 查看器和库中打开,因此在某种程度上已损坏。

    但事实并非如此。它在 Acrobat Reader X 中打开得很好。然后我看到页面上的文字。

    当我从第一页复制/粘贴该文本时,我得到:

    Ûûp{¨¶ðQ{p{¨|={pÛû{¨>üb¶úN}l{¨d{p{¨> >Ûpû¶bp{¨}|=/} pT¶=}Nm{Z{Úpd{m}a¾Ú}mp{Ú¶¨>ztNð{øÔ_c}m{ТÁ}=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 proc 进行比较。

    注意:这可以通过一些缓存被重写以提高效率,但它可以传达这个想法(我希望)。

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

    【讨论】:

      猜你喜欢
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多