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

文章目录

  • 背景
  • pytesseract
  • paddleocr
    • 百度api
    • paddleocr

背景

  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'}# 获取tokenres = 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']#输出文本结果,保存为txtf=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,Falsefor line in result:txt = txt + line[1][0]if txt == '':return txt,Falsereturn txt,True

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/601418.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSON字符串中获取一个特定字段的值

JSON字符串中获取一个特定字段的值 一、方式一,引用gson工具二、方式二,使用jackson三、方式三,使用jackson转换Object四、方式四,使用hutool,获取报文数组数据 一、方式一,引用gson工具 测试报文&#xf…

每日五道java面试题之ZooKeeper篇(一)

目录: 第一题. ZooKeeper 是什么?第二题. Zookeeper 文件系统第三题. Zookeeper 怎么保证主从节点的状态同步?第四题. 四种类型的数据节点 Znode第五题 . Zookeeper Watcher 机制 – 数据变更通知 第一题. ZooKeeper 是什么? Zoo…

每日一题 第八十二期 CodeTON Round 8 (Div. 1 + Div. 2, Rated, Prizes!)

C1. Bessie’s Birthday Cake (Easy Version) time limit per test: 2 seconds memory limit per test: 256 megabytes input: standard input output: standard output Proof Geometric Construction Can Solve All Love Affairs - manbo-p ⠀ This is the easy versio…

【C++ STL算法】sort 排序

文章目录 【 1. 基本原理 】【 2. sort 的应用 】实例 - sort 函数实现 升序排序和降序排序 函数名用法sort (first, last)基于 快速排序,对容器或普通数组中 [ first, last ) 范围内的元素进行排序,默认进行升序排序(从小到大)。…

幸运数(蓝桥杯)

该 import java.util.*; public class Main {public static void main(String[] args) {Scanner scannew Scanner(System.in);int cnt0;for(int i1;i<100000000;i) {String si"";int lens.length();if(len%2!0) continue;int sum10; //左边int sum20; //右边fo…

CLIP模型入门

简介 CLIP&#xff08;Contrastive Language-Image Pre-Training&#xff09;是OpenAI在2021年初发布的多模态预训练神经网络模型&#xff0c;用于匹配图像和文本。该模型的关键创新之一是将图像和文本映射到统一的向量空间&#xff0c;通过对比学习的方式进行预训练&#xff…

如何给MySQL数据库的所有表统一加上字段

在开发过程中&#xff0c;有时候慢慢的建了很多数据库表&#xff0c;但是后来发现需要统一增加某些字段的时候&#xff0c;可以通过alter语句 ALTER TABLE 表名 ADD 列名 数据类型;比如我要给t_user表增加gmt_create与gmt_modified字段&#xff0c;用作记录新增记录时间与更新…

基于支持 GPT 的服务的初创公司

Kafkai&#xff1a;多语言长篇内容生成&#xff0c;AI写作的新趋势 介绍 随着生成式预训练 Transformer (GPT) 的出现&#xff0c;技术世界正在见证范式转变。 这种人工智能驱动的创新不仅仅是一种转瞬即逝的趋势&#xff0c;而是一种趋势。 它已成为科技行业的基石&#xff0c…

做海外问卷调查有什么技巧和方法?纯干货讲解

做海外问卷调查无外乎几个步骤&#xff1a;选国家、做人设、测题目、刷题目。每个步骤都有一定的技巧&#xff0c;但是它的技巧成分不是很明显。 国家的选择一般以发达国家为主&#xff0c;国家越发达问卷的数量越多&#xff0c;正常白天做题主流国家选择&#xff1a;新加坡、…

【Java EE】Spring请求如何传递参数详解

文章目录 &#x1f38d;传递单个参数&#x1f334;传递多个参数&#x1f340;传递对象&#x1f384;后端参数重命名&#xff08;后端参数映射&#xff09;&#x1f332;传递数组&#x1f38d;传递集合&#x1f334;传递JSON数据&#x1f338;JSON概念&#x1f338;JSON的语法&a…

2024年阿里云优惠券(代金券)在哪里领取?

阿里云作为国内领先的云计算服务提供商&#xff0c;不仅提供了稳定、高效的云服务&#xff0c;还时常推出各种优惠活动&#xff0c;以此来吸引用户上云。其中&#xff0c;阿里云优惠券就是一种常见的优惠方式。那么&#xff0c;在2024年&#xff0c;我们该如何领取阿里云优惠券…

动态规划:背包问题合集

01背包 定义dp[i][j]&#xff1a;在前i件物品中选出若干件&#xff0c;放入容量为j的背包&#xff0c;能获得的最大价值。 考虑第i件物品拿还是不拿。讨论c[i]与背包容量的关系&#xff1a; &#xff08;1&#xff09;j < c[i] 时&#xff0c;背包容量为j&#xff0c;而第…