python - 如何使用 Python 从 PDF 文件中读取简单文本?
问题描述
需要解析 PDF 文件以便仅提取文本的第一行,并寻找不同的 Python 包来完成这项工作,但没有任何运气。
尝试过:
PDFminer,PDFminer.six和PDFminer3k,对于简单的工作来说似乎过于复杂,我无法找到一个简单的工作示例
tika,它给出了不同的终端错误消息并且非常慢
pdftotext安装失败
pdf2text
pip list
在“import pdf2text”时失败,当更改为“pdftotext”时,即使显示安装了“Extractor”,也无法导入“ImportError: cannot import name 'Extractor'”
通常我发现安装的 Python 包运行得非常好,但是将 PDF 解析为文本似乎是一个丛林,无数的工具也表明了这一点。
关于如何在 Python 中将 PDF 文件简单解析为文本的任何建议?
添加了 PyPDF2 示例
PyPDF2 的一个例子是:
import PyPDF2
pdfFileObj = open('file.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
pageObj_0 = pdfReader.getPage(0)
print(pageObj_0.extractText())
它将垃圾返回为:
$%$%&%&$'('~!)"*+#
解决方案
基于 pdfminer,我能够将pdf2txt.py
脚本(由 pdfminer 提供)中的基本必要性提取到一个函数中:
import io
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.layout import LAParams
from pdfminer.converter import TextConverter
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
def pdf_to_text(path):
with open(path, 'rb') as fp:
rsrcmgr = PDFResourceManager()
outfp = io.StringIO()
laparams = LAParams()
device = TextConverter(rsrcmgr, outfp, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
for page in PDFPage.get_pages(fp):
interpreter.process_page(page)
text = outfp.getvalue()
return text
推荐阅读
- firebase - 颤振错误-“参数不匹配的闭包调用:函数'[]'接收者:闭包:()=>映射
来自函数‘数据’:” - python - pytest.skip('Output string') 在哪里打印?
- java - 单击 webview 上的链接时如何在另一个 webview 中打开它?
- c# - StackExchange.Redis.ConnectionMultiplexer Dispose() 是否会导致类似于 UnsubscribeAll() 的行为?
- python - for循环中的文本框输入并在滚动框中打印文本
- c# - 为什么 Castle Windsor MVC 在服务器上不起作用?
- html - CSS 在 ioslides 中去除 Kable 样式
- docker - 如何在 docker 容器中本地运行 heroku-buildpack-nginx?
- xml - 为 xml 文件创建索引文件
- python-3.x - 更新变量并计算逆