python - 从pdf中提取文本到文件
问题描述
这个问题可能是重复的,但类似问题中的答案都没有帮助我。我正在寻找一种简单的方法,将 pdf 文件中的文本提取到任何其他类型的文件或结构中,让我使用它。我要提取的文本出现在第 78-79 页。在流程结束时,我想将表格中的每个单元格写入.txt
文件的不同行中。例如,我想把表格中的第一行从这里开始:
对此:
0x00
Channel standby
CH_7
CH_6
CH_5
CH_4
CH_3
CH_2
CH_1
CH_0
0x00
RW
我正在使用 Visual Studio 2017,但我也可以在 Pycharm 上工作。
但我在 Windows 10 操作系统上安装所需的库时遇到问题。我也不确定这些库是否仍在使用和支持。如果有人可以向我推荐有关此主题的一些更新材料或将我推荐给相关图书馆,我将不胜感激。
谢谢你。
解决方案
这是使用 PyMuPDF ( pip install pymupdf
) 的东西。
在此示例中,get_document_bytes
只需在您提供的 URL 处请求 PDF 资源(使用第三方requests
模块),并返回 PDF 字节。我们使用字节来通过参数main
创建一个fitz.Document
实例。stream
您也可以手动下载 PDF 文件并提供 afilename
而不是字节流,但我不想这样做。我们从文档中获取特定页面并打印该页面上的所有文本:
def get_document_bytes():
import requests
url = "https://www.mouser.co.il/datasheet/2/609/AD7768-7768-4-1502035.pdf"
headers = {
"user-agent": "Mozilla/5.0"
}
response = requests.get(url, headers=headers)
response.raise_for_status()
return response.content
def main():
import fitz
desired_page = 78
doc = fitz.Document(stream=get_document_bytes(), filetype="PDF")
page = doc.loadPage(page_id=desired_page-1)
print(page.getText())
return 0
if __name__ == "__main__":
import sys
sys.exit(main())
输出:
AD7768/AD7768-4
Data Sheet
Rev. B | Page 78 of 105
AD7768 REGISTER MAP DETAILS (SPI CONTROL)
AD7768 REGISTER MAP
See Table 63 and the AD7768-4 Register Map Details (SPI Control) section for the AD7768-4 register map and register functions.
Table 37. Detailed AD7768 Register Map
Reg.
Name
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset RW
0x00
Channel standby
CH_7
CH_6
CH_5
CH_4
CH_3
CH_2
CH_1
CH_0
0x00
RW
...
我知道您想要两页的文本,而不仅仅是一页 - 而且您也不想要这些页面中的所有文本,只想要表格中的内容。这只是为了让您入门-我可能会对此进行更多修改,并稍后更新我的帖子。
推荐阅读
- c - 在编译时在 C 中生成嵌套常量数组
- dependency-injection - Legacy code & Dependency Injection - 两者通信有什么妥协吗?
- mysql - MySQL 返回日期/时间现在减去 1 小时的记录?
- javascript - 对象克隆和 eval() 的 Javascript 问题
- javascript - 动态 Vue Router 变量,事先不知道变量
- javascript - 如何在javascript中增加日期以及如何禁用以前的日期?
- javascript - 将只读输入值发送到服务器(MEAN 堆栈)
- javascript - 如何使用 HTML 元素属性将数据从 Blade.php 文件传递到反应组件?
- python - 在字符串python中的“(数据)”中删除
- apache-spark - Pyspark 将所有嵌入式结构展平到同一级别