6

我正在使用模块pdfminerpython 模块解析 PDF 文档。我只想从此文档中提取文本。

这个过程很顺利,但是当我提取LTText*对象时,我意识到我没有得到该LTText*对象中的所有文本。它似乎有一个内部缓冲区或类似的东西,导致每页中的文本都被剪切。

我的代码:

...
for lt_text_obj in lt_objs:
    if isinstance(lt_text_obj, LTTextBox) or isinstance(lt_text_obj, LTTextLine):
         if lt_text_obj._objs:
             for text_obj in lt_text_obj._objs:
                 if isinstance(text_obj, LTTextBox) or isinstance(text_obj,LTTextLine)]:
                     text_content.append(text_obj)
...

text_obj 变量从不包含整个文本,即使 pdf 文件页面中的文本始终采用相同的格式。

我不认为问题出在代码中,因为我还使用 pdf2txt.py 脚本将 pdf 文件转换为 txt,并且生成的 txt 文件的页面也是“剪切”的。

看来问题可能出在 pdfminer 配置或我的 pdf 文件格式中……我完全迷失了。

有任何想法吗?

4

2 回答 2

2

没有输入pdf很难说,我会尝试运行:

pdf2txt.py -o output.xml path/to/your_input.pdf

此工具是 pdfminder 的一部分,对于调试非常有用,尝试检查结果 xml 以找到未正确提取的模式

于 2013-11-18T05:23:50.573 回答
1

您可以改用 PyPDF2 吗?我为自己编写了一个小的“界面”,以便逐页地将一个pdf文件传输到另一个(https://github.com/stianhotboi/pypdf2Interface/blob/master/pypdf2_interface.py)。在我的情况下,我没有看到任何像你这样的问题(一切似乎都很好)。

于 2013-11-13T13:33:53.183 回答