python提取图片型pdf中的文字(提取pdf扫描件文字)
前言
文字型pdf提取,python的库一大堆,但是图片型pdf和pdf扫描件提取,还是有些难度的,我们需要用到OCR(光学字符识别)功能。
一、准备
1、安装OCR(光学字符识别)支持库
首先要安装pytesseract
和Tesserac OCR
,Tesseract OCR是一种广泛使用的OCR工具,它可以用于从图像中提取文字。Tesseract OCR具有较高的识别精度和速度,同时支持多种语言。在Python中,可以使用pytesseract库来调用Tesseract OCR。
(1)安装pytesseract
库:
pip install pytesseract
(2)安装Tesseract OCR
程序
下载安装
github下载地址:https://github.com/tesseract-ocr/tesseract
国内下载地址:https://digi.bib.uni-mannheim.de/tesseract/
如果要识别中文的话,要安装3.0以上的版本,我这里以国内下载地址为例,下载5.0版本,如图:
下载完成之后,双击打开,一路next即可,自己选择好安装位置,后面要配置环境变量的。
配置环境变量
我的安装位置如图:
找到系统变量的path,点击编辑,如图:
新建一个环境变量,变量的值是tesseract的安装位置,如图:
点击确定之后,在系统变量界面,点击新建,新建一个系统变量,名称为TESSDATA_PREFIX
,值为安装目录下的tessdata
目录位置,如图:
一路点击确定即可。
下载中文包
软件默认使用的是英文包,只能识别英文,我们现在下载配置中文包,下载地址:
github:https://github.com/tesseract-ocr/tessdata
gitcode(国内):https://gitcode.com/mirrors/tesseract-ocr/tessdata/tree/main?utm_source=csdn_github_accelerator&isLogin=1
建议选择国内地址,下载速度比较快,我们下载五个包,分别是:eng.traineddata、chi_sim.traineddata、chi_sim_vert.traineddata、chi_tra.traineddata、chi_tra_vert.traineddata,如图:
第一个是英文包,后面四个是中文包,sim开头是简体,tra开头是繁体,点击进去,点击右侧的下载,将五个包下载下来,如图:
下载完成之后,复制到tesseract安装目录下的tessdata
文件夹下,如图:
在命令行输入tesseract -v,显示tesseract的版本号,就表示安装完成了,如图:
现在安装工作就完成了。
测试图片识别
测试图片如下:
测试代码:
import pytesseract
from PIL import Image# (1)配置tesseract安装路径
pytesseract.pytesseract.tesseract_cmd = r'F:\tesseract\tesseract.exe'text = pytesseract.image_to_string(Image.open(r'1-26.jpg'))
print(text)
结果如下:
如果我们不想每次代码都去配置tesseract的安装路径的话,可以直接在源文件里面修改,我们找到如图的文件,将框出来的地方修改成安装路径即可:
(2)安装其他库
pip install PyMuPDF PIL
二、正式提取图片型pdf的文字
代码如下:
# -*- coding: UTF-8 -*-
"""
@Date :2023/12/17
"""
import fitz
import pytesseract
from PIL import Image
import io# (1)配置tesseract安装路径
pytesseract.pytesseract.tesseract_cmd = r'F:\tesseract\tesseract.exe'# (2)打开pdf文件
pdf_file = fitz.open(r'一户一宅.pdf')# (3)遍历pdf的每一页
for page_num in range(len(pdf_file)):# 获取页面page = pdf_file[page_num]# 提取页面上的图像image_list = page.get_images(full=True)for image_index, img in enumerate(image_list):# 提取图像xref = img[0]base_image = pdf_file.extract_image(xref)image_bytes = base_image["image"]# 将字节转换为PIL图像image = Image.open(io.BytesIO(image_bytes))# 使用pytesseract对图像进行ocrtext = pytesseract.image_to_string(image, lang='chi_sim')# 打印结果print(f"Page {page_num + 1}, Image {image_index + 1}:")print(text)# 关闭pdf文件
pdf_file.close()
结果如下:
总结
需要注意的是,Tesseract OCR对于一些复杂或低质量的图像可能识别效果不佳。
提示
对于文字型pdf的提取,可以看这几篇文章:
https://blog.csdn.net/weixin_43856625/article/details/134705266
https://www.jianshu.com/p/8fbb662bd6f7
https://blog.csdn.net/Achernar0208/article/details/129199937
相关文章:

python提取图片型pdf中的文字(提取pdf扫描件文字)
前言 文字型pdf提取,python的库一大堆,但是图片型pdf和pdf扫描件提取,还是有些难度的,我们需要用到OCR(光学字符识别)功能。 一、准备 1、安装OCR(光学字符识别)支持库 首先要安…...

08‐Mysql全局优化与Mysql 8.0新特详解
文章目录 Mysql全局优化总结配置文件my.ini或my.cnf的全局参数最大连接数允许用户连接的最大数量MySQL能够暂存的连接数量JDBC连接空闲等待时长client连接空闲等待时长innodb线程并发数innodb存储引擎buffer pool缓存大小行锁锁定时间redo log写入策略binlog写入磁盘机制排序线…...

【LeetCode刷题笔记】155.最小栈
创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!! 主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步! 更多算法知识专栏:算法分析🔥 给大家跳段街舞感谢…...

我的4096创作纪念日
机缘 岁月如梭,时光一晃已经在CSDN扎根4096天了。第一次注册CSDN好像还是在2012年,那会还没大学毕业。初入CSDN,只是把他当作自己编程时遇到问题的在线笔记记录而已,没想到无意间还帮助了其他遇到同样问题困扰的同学。而在这4096…...
Java Web 01_HTML4HTML5基础标签语法
HMTL基础 1.什么是HTML Hyper Text Markup Language (超文本标记语言)标记又俗称标签(tag),一般格式: <tagName></tagName> 如 <h1></h1>标签里还可以有属性(Attribute): <tagName Atrribute “value” />…...
Androidstudio加载编译时kotlin-compiler-embeddable一直下载中
打开网址 https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.10/ 1.下载jar包 2.配置下载jar文件到.gradle文件中 文件路径:/Users/“用户名”/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embedd…...

案例073:基于微信小程序的智慧旅游平台开发
文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…...
Flink系列之:Flink 1.8.0 中的状态 TTL:如何在 Apache Flink 中自动清理应用程序状态
Flink系列之:Flink 1.8.0 中的状态 TTL:如何在 Apache Flink 中自动清理应用程序状态 一、状态的瞬态性质二、用于持续清理应用程序状态的状态 TTL三、倒垃圾四、保持完整状态快照干净五、堆状态后端的增量清理六、RocksDB 后台压缩以过滤掉过期状态七、…...

2023 亚马逊云科技 re:Invent 大会探秘:Aurora 无限数据库的突破性应用
文章目录 一、前言二、Amazon Aurora 无限数据库2.1 亚马逊云科技数据库产品发展历程2.2 什么是 Amazon Aurora Limitless Database(无限数据库)2.3 Amazon Aurora Limitless Database 设计架构2.4 Amazon Aurora Limitless Database 分片功能2.5 使用 A…...

IDEA添加Apifox插件后,返回参数不详细解决办法
Apifox官方文档地址(文档中返回的是特殊情况,跟我现在项目的返回不一样,因此需要更改配置) 点击跳转到官方API地址 实现步骤分为两步:第一步:添加配置,第二步使用注解。 1.添加配置 打开Idea设置,添加配置…...
js多图合成一张图
具体思路 先设置画布的宽高,再将每个图片整理成一个对象的数组通过某个方法传出合成后的base64 (1)、创建一个画布的类,他的属性是canvas虚拟dom和ctx (2)、构造器初始化convas对象、ctx、convas的宽高 …...

利用原始套接字解决mac地址错误问题【南瑞SysKeeper-2000】
一:案例描述 一键可视顺控图像智能项目在网络部署过程中,对网络限制隔离安全性要求很高,用到正向隔离装置(南瑞SysKeeper-2000型号)。 图一 正向装置示意图 现场发现问题:直连网线情况下,我方…...
JVM- 为什么G1垃圾回收器需要有大对象区
G1(Garbage-First)垃圾回收器在Java虚拟机(JVM)中引入了大对象区(也称为Humongous Region或H-Region)的概念,主要是为了高效地处理大型对象。在垃圾回收的上下文中,大对象指的是那些…...
操作系统的界面
(1) 请说明系统生成和系统引导的过程。 解: 系统的生成过程:当裸机启动后,会运行一个特殊的程序来自动进行系统的生成(安装),生成系统之前需要先对硬件平台状况进行检查,或者从指定文件处读取…...

1.【分布式】分布式事务详解
分布式事务 1.分布式事务是什么?数据库事务 2.分布式事务产生的原因?存储层拆分服务层拆分 3.分布式事务解决方案4.分布式事务有哪些开源组件SeateTCC 分布式服务组件基于消息补偿的最终一致性 5.两阶段提交,三阶段协议详解二阶段提交协议三阶…...

selenium-wire简介
一.简介 以下来自chatGPT回答: selenium-wire是一个基于selenium的Python库,它扩展了selenium的功能,使得我们可以在自动化测试中直接访问和修改浏览器的网络请求和响应。selenium-wire可以拦截和修改HTTP请求和响应,从而可以在…...

华为组播配置案例
igmp-snooping主要用于生成二层组播表项,防止交换机全部接口都发组播报文 PC端配置: 组播源配置: R1 interface GigabitEthernet0/0/0 ip address 10.0.0.1 255.255.255.0 pim dm interface GigabitEthernet0/0/1 ip address 192.168.0…...

lua语法
lua语法 1.lua数据类型 lua 脚本输出乱码,将lua脚本改为UTF-8编码,并且需要DOS下修改代码页:CHCP 65001 即可。 基本语法 注释 print("script lua win")-- 单行注释--[[多行注释]]--标识符 类似于:java当中 变量、…...
5A-Downloader,m3u8文件转mp4文件,音视频分离ts合并、转mp4
获取方式: 1.https://www.pgyer.com/DpxhpE 2.https://github.com/JoeLeeto/5A-Downloader 3.https://play.google.com/store/apps/details?idcom.leet.downloader...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...

【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...