当前位置: 首页 > news >正文

Python 读取pdf文件

Python 实现读取pdf文件简单示例。

安装命令

需要安装操作pdf的三方类库,命令如下:

pip install pdfminer3K

安装过程如下:

引入类库

需要引入很多的类库。

示例如下:

import sys
import importlib
importlib.reload(sys)from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import  PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal, LAParams
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed

 

读取pdf实现

实现步骤为:先通过二进制方式打开测试pdf文档,创建pdf文档解析测试文档内容,

最后读取文件内容,保存到另一个文件中。

示例如下:

import sys
import importlibimportlib.reload(sys)from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal, LAParams
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
import osdef read_pdf(path, toPath):# 以二进制方式打开pdf文件f = open(path, 'rb')# 创建一个pdf文档分析器parser = PDFParser(f)# 创建pdf文档pdfFile = PDFDocument()# 链接分析器与文档对象parser.set_document(pdfFile)pdfFile.set_parser(parser)# 提供初始化密码pdfFile.initialize()# 检测文档是否提供txt转换if not pdfFile.is_extractable:raise PDFTextExtractionNotAllowedelse:# 解析数据# 数据管理器manager = PDFResourceManager()# 创建一个PDF设备对象laparams = LAParams()device = PDFPageAggregator(manager, laparams=laparams)# 解释器对象interpreter = PDFPageInterpreter(manager, device)for page in pdfFile.get_pages():interpreter.process_page(page)layout = device.get_result()for x in layout:if isinstance(x, LTTextBoxHorizontal):with open(toPath, 'a', encoding='utf-8') as f:print(x.get_text())f.write(x.get_text() + "\n")path = os.path.join(os.getcwd(), 'test_1.pdf')
toPath = os.path.join(os.getcwd(), 'test_2.txt')
read_pdf(path, toPath)

注意:无法读取中文,貌似需要加载中文字体。还有就是在写入pdf文件,格式不对无法打开暂时没找到原因。

总结

本篇只是使用Python 实现读取pdf文件简单示例,因为时间关系没有做深入的扩展,等之后有时间再做补充。

http://www.lryc.cn/news/299962.html

相关文章:

  • 人究其一生只是在通用智能模型基础上作微调和对齐
  • DS:二叉树的链式结构及实现
  • PhP+vue企业原材料采购系统_cxg0o
  • C++线程池
  • SpringCloud-Hystrix:服务熔断与服务降级
  • 浅谈Linux环境
  • Spring 用法学习总结(一)之基于 XML 注入属性
  • 免费软件推荐-开源免费批量离线图文识别(OCR)
  • 2 scala集合-元组和列表
  • Spring Boot开启SSL/Https进行交互。
  • 88.Go设计优雅的错误处理
  • Python4Delphi: Delphi 程序使用 Python 抓取网页
  • 编辑器Zed
  • Java的接口
  • 【计算机网络】计算机软件工程人工智能研究生复试资料整理
  • 【Network Management】AUTOSAR架构下CanNm User Data详解
  • 量子算法入门——2.线性代数与复数
  • 分别通过select、多进程、多线程实现一个并发服务器
  • 如何在 emacs 上开始使用 Tree-Sitter (archlinux)
  • FL Studio2024最新中文版有哪些其新功能特点?
  • Oracle的学习心得和知识总结(三十二)|Oracle数据库数据库回放功能之论文四翻译及学习
  • 系统架构27 - 软件架构设计(6)
  • STM32 cubemx配置DMA+空闲中断接收不定长数据
  • Pycharm配置运行selenium教程
  • 银河麒麟V10开机后黑屏解决方法
  • 【Git版本控制 02】分支管理
  • 基金分类
  • kali系统概述、nmap扫描应用、john破解密码、抓包概述、以太网帧结构、抓包应用、wireshark应用、nginx安全加固、Linux系统加固
  • Spring Cloud 路由和消息传递 (HTTP 路由)
  • 【PyQt】12-滑块、计数控件