使用Python进行PDF图片识别OCR

摘要:
使用场景使用图片识别从图片中快速提取信息,既方便又高效。Python无法直接识别PDF,因此如果您想识别PDF,需要先将PDF转换为图片,然后再识别它。

使用场景

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

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

必备工具

Python 

可以安装3.7及以上版本

tesseract-ocr 

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

python 库pip install pytesseract

pip install pillow
pip install opencv-python
pip install fitz
pip install PyMuPDF

代码示例

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》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Swagger发布服务器时错误 500 : { "Message": "An error has occurred." }Qt笔记-const-虚函数-元对象系统下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

OCR(光学字符识别)技术简介

OCR技术起源 OCR最早的概念是由德国人Tausheck最先提出的,1966年他们发表了第一篇关于汉字识别的文章,采用了模板匹配法识别了1000个印刷体汉字。早在60、70年代,世界各国就开始有OCR的研究,而研究的初期,多以文字的识别方法研究为主,且识别的文字仅为0至9的数字。以同样拥有方块文字的日本为例,1960年左右开始研究OCR的基本识别理论,初...

Aspose.Words转换为PDF的时候字体丢失的问题解决

系统中明明有字体的,Word中显示也正常,就是转换为PDF以后不正常,字体丢失,被替换成了等线字体 好一番研究,终于找到原因 ,原因是WindowsFonts下的文件,有些只是虚拟的路径,真正的字体文件是在C:Users用户名AppDataLocalMicrosoftWindowsFonts 这个目录下,从而导致的这个问题 只要将用户的字体目录添加进去就可...

delphi PDF控件介绍

PDF控件介绍 llPDFLib 概述 llPDFLib 是用于创建 PDF 文档的纯 Object Pascal 库。 该库不使用任何 DLL 或外部第三方软件来生成 PDF 文件。 库包括具有属性和方法的 TPDFDocument 组件,如 Delphi 的 TPrinter,但旨在生成 PDF 文件。 特征 真正的 Canvas.Handle (H...

修改pycharm中的flask项目名遇到的坑

曾修改过自己的项目名,并在settings中的解释器也更正过来了。然后执行pip list 报错: failed to create process. 解决方法如下: 到你的项目的venv目录下的Scripts文件夹下,有2个文件名pip3-script.py和pip-script.py,在第一行中更正你新项目名的解释器路径即可即可。 #!D:python...

基于Python3.7的robotframework环境搭建步骤

一、前言    Robot Framework作为公司能快速落地实现UI自动化测试的一款框架,同时也非常适合刚入门自动化测试的朋友们去快速学习自动化,笔者计划通过从搭建逐步到完成自动化测试的过程来整体描述它的使用。 Robot Framework是一个通用的验收测试和验收测试驱动开发(ATDD)的自动化测试框架。它具有易于使用的表格测试数据语法,它采用了关...

python逆向工程:通过代码生成类图

python逆向工程:通过代码生成类图 大致过程 现在有一个core包,里面有python的代码。 通过core包,生成python的类图,如下: 实施步骤: 1、首先安装graphviz,一个画图工具,地址为:http://www.graphviz.org/pub/graphviz/stable/windows/graphviz-2.28.0.msi...