python - 使用 Python 将 PDF 文本提取到文本文件中 - 提取错误
问题描述
我想首先从 1 个 pdf 文件中提取所有文本并将其存储到一个文本文件中。
这是我的代码:
import PyPDF2
from pathlib import Path
with Path('C:/Users/Lui/Desktop/Test/file1.pdf').open(mode='rb') as pdf_file, open('Extracted/extractPDF.txt', 'w') as text_file:
read_pdf = PyPDF2.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
print(number_of_pages)
for page_number in range(number_of_pages): # use xrange in Py2
page = read_pdf.getPage(page_number)
page_content = page.extractText()
print(page_content)
text_file.write(page_content)
我究竟做错了什么?我的目标是循环浏览 1,000 个 PDF,所以我试图让 1 个示例首先工作。
解决方案
尝试使用pdftotext
import pdftotext
# Load your PDF
with open(filename, "rb") as f:
pdf = pdftotext.PDF(f)
# If it's password-protected
#with open("secure.pdf", "rb") as f:
# pdf = pdftotext.PDF(f, "secret")
# How many pages?
#print(len(pdf))
# Iterate over all the pages
#for page in pdf:
# print(page)
data = "\n\n".join(pdf)
# Read all the text into one string
print(data)
这个包效果更好,应该可以帮助你。
推荐阅读
- html - WCAG 2.0 H44 - 当文本框使用占位符文本时如何添加标签
- python - 在 TensorFlow 或 PyTorch 中仅创建和训练指定的权重
- reactjs - Jest React Redux 测试
- javascript - 在 jquery 中使用 hasClass 未检测到内部类名
- oracle - Oracle SQL ORA-24344 使用触发器时编译错误成功
- javascript - 获得链接的价值?
- python - Pandas 改变数值数据:迭代行以对每一行中的数据进行分组,打包成一个列表,将列表转换为系列,然后作为列插入数据框
- node.js - 我想通过 npm 安装一些东西,但它说'错误'和'checkPermissions Missing'
- apache - 无法使用 vagrant 从主机解析 IP
- amazon-web-services - AWS RDS 无法设置启用删除保护的备份保留期