【问题标题】:PDFMiner - pdf2txt.py parsing text out of orderPDFMiner - pdf2txt.py 乱序解析文本
【发布时间】:2015-09-21 07:02:12
【问题描述】:

我是 python 和 pdfminer 的新手,虽然不是一般的编程。我在 Windows 7 和 cygwin 上使用 Python 2.7。

我正在用 beautifulsoup 编写一个脚本来从 pdf 中提取特定信息。为此,我使用 pdf2txt 创建了此 pdf 的 .txt 和 .html 文件以用于测试。 只是常用的命令:

python pdf2txt.py -o output.txt input.pdf

python pdf2txt.py -o output.html input.pdf

它们都有相同的问题:某些文本行出现乱序。 在这个 pdf 上运行 pdf2txt,你会明白我的意思: (编辑:我找到了原始网站。)这是美属萨摩亚在这个页面上的:https://www.iamovers.org/ResourcesPublications/ShipperGuides.aspx?navItemNumber=580

例如,这是pdf第一页的一部分的正确布局:

所需文件

护照复印件(有些港口需要所有家庭成员的护照 列于 3299)
表格 CF-3299
补充声明(大多数港口要求)
英文详细盘点
签证副本(如果是非美国公民/永久居民)/永久副本 居民卡
I-94 邮票/卡
提单 (OBL) / 空运提单 (AWB) 副本
表格 DS-1504(外交官)
A-1 签证(外交官)
进口商安全申报 (ISF)

这就是使用 pdf2txt.py 进行 txt 和 html 转换的结果:

所需文件

护照复印件(某些港口需要 3299 上列出的所有家庭成员的护照)
表格 CF-3299
补充声明(大多数港口要求)
英文详细盘点
签证复印件(如果是非美国公民/永久居民)/永久居民卡复印件

提单 (OBL) / 空运提单 (AWB) 副本
表格 DS-1504(外交官)
A-1 签证(外交官)

进口商安全申报 (ISF)

I-94 邮票/卡片

出于某种原因,以字母“I”开头的行总是从它们的位置中取出,放在下一个空行或前一个空行上。还有一些其他角色也经常发生这种情况。

我已在此处发布此问题:https://github.com/euske/pdfminer/issues/121

这一定是pdfminer的问题。我还不太了解python,无法对包进行更改。有谁知道如何解决这个问题?

【问题讨论】:

    标签: python python-2.7 pdf pdfminer


    【解决方案1】:

    我不想将我的电子邮件地址提供给某个文件托管网站,因此我无法查看您提供的示例。

    但是,一般来说,即使 PDF 文件仅包含排列整齐的文本,PDF 仍然不是文本文件格式。它更像是一个脚本,告诉 PDF 阅读器将哪些图形和文本元素放置在页面上的哪个位置以及以什么顺序。

    您似乎希望纯文本输出与 PDF 文件的布局相匹配,但如果您考虑一下,这并不是一个微不足道的要求。您可以假设(正如 pdf2txt 显然所做的那样)元素已经在 PDF 文件中从上到下、从左到右排序,然后扫描每个页面的元素列表,添加任何可提取的字符串或字符你遇到一个字符串的末尾。但这是一个幼稚的假设,因为不需要以任何方式对 PDF 页面中的元素进行排序(除非从后到前,以防有任何重叠。)

    我个人经常使用 PDFTron 的 PDFNet 的 C# 版本。它能够生成文本页面上所有单词的列表,每个单词由字符串和边界框表示。然后,您可以创建将单词链接成行并对这些行进行排序的规则,尽管您要考虑的布局类型越多,它确实会变得越复杂(例如,排列在两列中的文本、表格布局、沿边框的垂直文本页面等)

    还有一个Python version,所以也许你可以看看。但归根结底,你要做的事情实际上并没有那么简单。

    【讨论】:

    • 询问您的电子邮件?啊。对不起。
    • 我在这里阅读了很多关于 pdf 抓取的帖子,所以我知道这不是微不足道的。但它总是发生在以“I”、“J”和其他一些字符开头的行中,这让我认为这是一个可以解决的问题。 PDFNet 看起来很不错,但我仅限于免费的解决方案 atm。
    • 我查看了 PDFMiner,它似乎确实做了一些布局识别,所以它可能是 PDFMiner 最终起作用了。您是否尝试过使用 -F 和 -A 开关?
    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多