如何使用 python 将给定的 PDF 提取到文本和表格并将数据存储在 .csv 文件中?

Posted

技术标签:

【中文标题】如何使用 python 将给定的 PDF 提取到文本和表格并将数据存储在 .csv 文件中?【英文标题】:How to extract given PDF to text and tables using python and store the data in .csv file? 【发布时间】:2022-01-08 23:34:32 【问题描述】:

我需要提取第一张表帐号、分行名称等和最后一张表日期、描述和金额。

pdf文件:https://drive.google.com/file/d/1b537hdTUMQwWSOJHRan6ckHBUDhRBbvX/view?usp=sharing 使用 pypdf2 库获取空白输出。 camelot 给出 OSError: Ghostscript is not installed.

import PyPDF2
file_path =open(r"E:\user\programs\28_oct_bank_statement\demo.pdf", "rb")
pdf = PyPDF2.PdfFileReader(file_path)
pageObj = pdf.getPage(0)
print(pageObj.extractText())
import camelot

data = camelot.read_pdf(r"demo.pdf", pages='all')
print(data)

【问题讨论】:

始终将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图,不是链接到外部门户)有问题(不是评论)。还有其他有用的信息。 有时 PDF 可能具有非常复杂的结构(即,它可能将每个字符作为单独的对象)并且程序在从 PDF 中获取数据时遇到问题。 【参考方案1】:

Camelot 具有需要安装才能工作的依赖项,例如 Ghoscript。您首先需要检查是否为 mac/ubuntu 正确安装:

from ctypes.util import find_library
find_library("gs")
"libgs.so.9"

对于窗户:

import ctypes
from ctypes.util import find_library
find_library("".join(("gsdll", str(ctypes.sizeof(ctypes.c_voidp) * 8), ".dll")))
<name-of-ghostscript-library-on-windows>

否则,请从以下页面https://ghostscript.com/ 下载适用于 windows 的 Ghostscript。如果遇到更多问题,我强烈建议您再次阅读 camelot 文档。

【讨论】:

【参考方案2】:

我通常使用 apache tika 来执行此操作。

As shown here

您可以简单地安装它,然后使用 python 脚本:



from tika import parser  
  
parsed_pdf = parser.from_file("sample.pdf")
  
text = parsed_pdf['content']
metadata = parsed_pdf['metadata']
print(data)
  

请注意,您确实需要在机器上安装 Java 才能运行它,但它会返回测试,然后在您获得文本后,您可以查找文本中的模式以提取所需的确切数据。

这样做的好处是它还会返回 pdf 的元数据

【讨论】:

以上是关于如何使用 python 将给定的 PDF 提取到文本和表格并将数据存储在 .csv 文件中?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PDFrw 在 Python 中从 PDF 中提取数据

从给定坐标提取 PDF 文本

如何从 python 中的图像(或 pdf 文件)中提取名称和手写数字?

在python中使用PDFMiner从PDF文件中提取文本?

如何从pdf中提取特定标题下的文本?

实用脚本!Python 提取 PDF 指定内容生成新文件!