python实现OCR:pytesseract和pyddleocr(附代码)

本文对比了pytesseract(基于GoogleTesseract的Python接口)和百度PaddleOCR(百度AI的文字识别工具)在光学字符识别领域的应用,讨论了它们的安装、使用方法以及各自的优缺点,特别提到了百度API的限制和PaddleOCR的离线部署与无限制使用特性。
摘要由CSDN通过智能技术生成

背景

  OCR是光学字符识别(Optical Character Recognition)的缩写,通过扫描等光学输入方式和文字识别将图片中的文字提取出来,非常适用于提取网络截图或扫描pdf等文件里的文本。
  目前市面上的OCR工具很多,今天笔者对常用的两种方式分享:

1、pytesseract:pytesseract是google的tesseract的一个python版本的接口库。
2、paddleocr:在国内的工具中,百度AI提供的OCR接口服务算是其中的佼佼者。除了在线接口OCR服务之外,最近百度还开源了飞桨文字识别套件PaddleOCR,可以基于该工具开展本地化的文字识别。

pytesseract

  pytesseract是google的tesseract的一个python版本的接口库,想要真正使用,首先需要安装tesseract。下载网址:tesseract,按默认安装就可以,记得勾选中文包,记住自己的安装路径,配置环境变量(配置到tesseract.exe所在那一级):在这里插入图片描述  测试是否安装成功,在命令行输入tesseract --help查看是否会返回一些提示信息:在这里插入图片描述
  然后安装pytessract库:

pip install pytesseract

  简单使用:

def get_OCR(img_path):
	img_cv = cv2.imread(img_path)
    txt = pytesseract.image_to_string(img_cv ,lang="chi_sim")
    return txt 

paddleocr

  百度api提供的OCR服务算是其中的佼佼者,paddleocr是百度还搞的飞桨文字识别套件,可以基于该工具开展本地化的文字识别。我们分别介绍百度api和paddleocr的使用方法。

百度api

  注册百度智能云账号,创建一个应用,在创建新应用页面中,需要填写使用应用的相关信息,并选择文字识别中的通用文字识别服务,全部填写完毕即可成功创建应用,会生成每个应用唯一的AppID、API Key、Secret Key等秘钥信息,这几个值是后续调用api接口的关键参数:在这里插入图片描述
  使用代码示例:

    '''
    构建请求url,获取Access Token,必须参数如下:
    grant_type: 必须参数,固定为client_credentials;
    client_id: 必须参数,应用的API Key;
    client_secret: 必须参数,应用的Secret Key;
    '''
    host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + '替换为自己的API Key' + '&client_secret=' + '替换为自己的Secret Key'
   
    headers = {
        'Content-Type': 'application/json;charset=UTF-8'
    }
    # 获取token
    res = requests.get(url=host, headers=headers).json()
    url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic'
    data = {}
    data['access_token'] = res['access_token']

    '''
    基于之前获取的token值,再次向请求url发送post请求,完成文字识别
    '''
    # 读取图片
    image = "D:\临时\图片1.png"
    file = open(image, 'rb')
    image = file.read()
    file.close()
    data['image'] = base64.b64encode(image)

    #发送post请求,传入图片信息参数,获取文字识别结果
    headers = {"Content-Type": "application/x-www-form-urlencoded"}
    res = requests.post(url=url, headers=headers, data=data)
    result = res.json()
    text = result['words_result'][0]['words']
    #输出文本结果,保存为txt
    f=open("D:\临时\图片1.txt",'a+')
    for i in range(0,len(result['words_result'])):
        f.write(result['words_result'][i]['words']+"\n")

  但是,使用api有诸多限制,一天只有几百次免费次数,还会收到网速的影响。

paddleocr

  PaddleOCR可以自行离线部署,并且没有使用频率限制,同时文字识别精度还是比较高的(比pytesseract强多了)。
  在安装使用paddleocr之前,首先需要安装paddlepaddle和shapely:

pip install paddlepaddle

  shapely如果直接使用pip安装可能会出现一些问题,我这里是在conda命令行安装,后续使用上没有出现问题:

conda install shapely

  安装好前面两个库以后,就可以安装PaddleOCR了:

pip install paddleocr

  给出我使用PaddleOCR的方法示例:

def get_paddle_ocr(ocr,image_path):
    result = ocr.ocr(image_path, cls=True)[0]
    txt = ''
    if result == None:
        return txt,False
    for line in result:
        txt = txt + line[1][0]
    if txt == '':
        return txt,False
    return txt,True
  • 42
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一本糊涂张~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值