【发布时间】:2021-02-20 16:31:38
【问题描述】:
我想使用 NLP 模块处理一些 pdf 文件,然后我想从所有现有表中清除这些文件。
这是使用pdfplumber提取表格的代码
import pdfplumber
pdf = pdfplumber.open("file.pdf")
page = pdf.pages[1]
table=page.extract_table()
但我想反转操作以仅提取文本
【问题讨论】:
我想使用 NLP 模块处理一些 pdf 文件,然后我想从所有现有表中清除这些文件。
这是使用pdfplumber提取表格的代码
import pdfplumber
pdf = pdfplumber.open("file.pdf")
page = pdf.pages[1]
table=page.extract_table()
但我想反转操作以仅提取文本
【问题讨论】:
免责声明:我是pText 的作者,此答案中使用的库。
加载Document
你需要定义一个LocationFilter
LocationFilter 的作用与它在锡上所说的差不多。它会监听解析事件(如“渲染文本”或“将字体更改为”),但它只允许那些在给定边界内的事件通过。
请记住,PDF 坐标的原点位于左下角。
因此,此示例中的LocationFilter 将仅匹配页面左下角的文本。
SimpleTextExtraction 添加到LocationFilter
下一个问题是“LocationFilter 要将事件传递给什么?”
在这种情况下,您可以先尝试SimpleTextExtraction。
把它们放在一起:
l0 = LocationFilter(0, 0, 100, 100)
l1 = SimpleTextExtraction()
l0.add_listener(l1)
doc = PDF.loads(pdf_file_handle, [l])
加载文档后,您可以向SimpleTextExtraction 询问给定Page 上的所有文本。
l1.get_text(0)
您可以通过GitHub 或使用PyPi 获取pText 还有很多 examples,请查看它们以了解有关处理图像的更多信息。
【讨论】:
你真的必须坚持使用 pdfplumber 吗? 如果没有,我可以建议一个更好的解决方案,改用 tabula。 这是您可以查看的类似问题的答案:tabula
【讨论】: