【问题标题】:PDF text extraction via iText returns strange characters通过 iText 提取 PDF 文本返回奇怪的字符
【发布时间】:2015-10-07 12:23:47
【问题描述】:

我正在使用 itext 5.3.4 从 PDF 文件中提取文本。我用来执行此操作的代码如下:

    PdfReaderContentParser parser = new PdfReaderContentParser(pdfReader);
    TextExtractionStrategy strategy;
    StringBuffer sb = new StringBuffer();

    for (int i = 1; i <= pdfReader.getNumberOfPages(); i++)
    {
        strategy = parser.processContent(i, new SimpleTextExtractionStrategy());
        sb.append(strategy.getResultantText());
    }
    String text = sb.toString();

然而,对于特定的 PDF,ë 返回为 °。知道为什么会发生这种情况以及可以做些什么吗?是itext库的BUG还是PDF的构建出错了?

感谢您的帮助。

【问题讨论】:

  • 测试的第一件事——别担心,这很简单——是用 Acrobat Reader 复制文本并将其粘贴到其他地方。如果 Acrobat Reader 无法忠实地阅读文本,则问题出在 PDF 的可能性很高。
  • 还有一件事要做:请更新。 5.3.x 版本是文本提取代码更改的时代。
  • 查看stackoverflow.com/a/32929474/1520650 了解类似问题以及对此行为的可能解释。
  • 升级到 itext 5.5.7 版解决了这个问题

标签: java pdf itext


【解决方案1】:

我看到两个可能的原因:

1. PDF文档是问题

一些银行创建包含机密信息的文件。为了避免他们的文档被解析并被提取,他们故意创建了一个包含不正确信息的 CMap。一个字符链接到一个字形(并且该字形被正确呈现),但也有一个字符到一个 UNICODE 符号的映射,并且该映射是故意错误的(因此无法提取内容)。

我在这些电影中展示了此类文件的示例:

2。 iText 是问题

您使用的是 2012 年 11 月 2 日的版本。在随后的(几乎)三年里,我们修复了许多错误。如果您升级到 iText 5.5.7,也许您的问题已经解决了。

如果升级到 iText 5.5.7 不能解决问题,如果 PDF 不是问题,那么您可能遇到了 iText 中的错误。如果您在商业环境中使用 iText,那么您就是 iText Software 的客户;在这种情况下,请通过仅供客户使用的封闭式票务系统联系 iText 的支持人员。

【讨论】:

  • 感谢 Bruno,升级到 itext 的 5.5.7 版解决了这个问题
猜你喜欢
  • 2020-01-24
  • 2019-03-22
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
  • 2019-07-05
  • 2017-07-04
  • 2018-03-11
  • 2019-07-27
相关资源
最近更新 更多