如何使用Python进行PDF图片识别OCR


Posted in Python onJanuary 22, 2021

使用场景

使用图片识别可以快速提取图片中的信息,方便高效。

Python并不能直接对PDF进行识别,所以如果是识别PDF的话,需要先将PDF转化为图片,然后再进行识别。

必备工具

  • Python 

可以安装3.7及以上版本

  • tesseract-ocr 

下载地址: https://github.com/UB-Mannheim/tesseract/wiki 使用最新版本即可

  • 需要用到的库
pip install pillow
pip install opencv-python
pip install fitz
pip install PyMuPDF
pip install pytesseract

代码示例

from PIL import Image
import os
import pytesseract 
import cv2 as cv
import fitz

def pdf_image(pdfPath,imgPath,zoom_x,zoom_y,rotation_angle):
  # 打开PDF文件
  pdf = fitz.open(pdfPath)
  # 逐页读取PDF
  for pg in range(0, pdf.pageCount):
    page = pdf[pg]
    # 设置缩放和旋转系数
    trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotation_angle)
    pm = page.getPixmap(matrix=trans, alpha=False)
    # 开始写图像
    pm.writePNG(imgPath+str(pg)+".png")
    #pm.writePNG(imgPath)
  pdf.close()
pdf_path ='D:/123.pdf'
img_path ='D:/123.png'
pdf_image(pdf_path,img_path,5,5,0)
# 依赖opencv
img=cv.imread(img_path)
text=pytesseract.image_to_string(Image.fromarray(img),lang='chi_tra')
# 不依赖opencv写法
# text=pytesseract.image_to_string(Image.open(img_path))
print(text)

总结

识别清晰的文字图片的时候准确率非常高

但是识别手写体的话效果不太好

注意事项

在安装tesseract-ocr 的时候一定要记得选择对应的语言,不然是无法正常使用的。

以上就是如何使用Python进行PDF图片识别OCR的详细内容,更多关于python pdf图片识别ocr的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python操作sqlite的CRUD实例分析
May 08 Python
Python实现复杂对象转JSON的方法示例
Jun 22 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
Oct 20 Python
python批量导入数据进Elasticsearch的实例
May 30 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
Jun 22 Python
Python爬虫文件下载图文教程
Dec 23 Python
python是否适合网页编程详解
Oct 04 Python
Python脚本操作Excel实现批量替换功能
Nov 20 Python
PyCharm刷新项目(文件)目录的实现
Feb 14 Python
详解python程序中的多任务
Sep 16 Python
基于Python实现体育彩票选号器功能代码实例
Sep 16 Python
Python中的套接字编程是什么?
Jun 21 Python
详解pandas映射与数据转换
Jan 22 #Python
python实现简单的井字棋游戏(gui界面)
Jan 22 #Python
Django url 路由匹配过程详解
Jan 22 #Python
浅析pandas随机排列与随机抽样
Jan 22 #Python
python 合并多个excel中同名的sheet
Jan 22 #Python
Python读取pdf表格写入excel的方法
Jan 22 #Python
python 基于UDP协议套接字通信的实现
Jan 22 #Python
You might like
php使用session二维数组实例
2014/11/06 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
Laravel 队列使用的实现
2019/01/08 PHP
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
js获取url中的参数且参数为中文时通过js解码
2014/03/19 Javascript
详解JavaScript对W3C DOM模版的支持情况
2015/06/16 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
js中offset,client , scroll 三大元素知识点总结
2019/09/11 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
vue el-table实现行内编辑功能
2019/12/11 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
Vant picker 多级联动操作
2020/11/02 Javascript
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
2016/11/16 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
Django中使用Celery的教程详解
2018/08/24 Python
Python中is和==的区别详解
2018/11/15 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
django 环境变量配置过程详解
2019/08/06 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
2020/02/17 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
毕业生找工作推荐信
2013/11/21 职场文书
司机职责范本
2014/03/08 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS
javascript Number 与 Math对象的介绍
2021/11/17 Javascript