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.mzph.cn/news/800714.shtml

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

相关文章

成都欣丰洪泰文化传媒有限公司电商服务的新锐力量

在当今电商行业风起云涌的时代,成都欣丰洪泰文化传媒有限公司以其独特的视角和专业的服务,成为了业内的佼佼者。该公司专注于电商服务,致力于为广大商家提供全方位、多层次的解决方案,助力商家在激烈的市场竞争中脱颖而出。 一、…

使用 Python 批量提取 Excel 中的图片(提供工具下载链接)

本文收录于《Python入门核心技术》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 大家好,我是水滴~~ 本文主要讲解如何利用 Python 来批量提取 Excel 中的图片,分别保存到目录中。并将程序打包成可执行文件&am…

rsync+inotify组合实现及时远程同步

目录 Rsync(Remote Sync)简介: Rsync 主要特点: Rsync 常用命令选项: Inotify 简介: Inotify 的主要功能: 结合 Rsync 和 Inotify 实现实时同步: 操作步骤: 配置…

vue3前端加载动画 lottie-web 的简单使用案例

什么是 Lottie Lottie 是 Airbnb 发布的一款开源动画库,它适用于 Android、iOS、Web 和 Windows 的库。 它提供了一套从设计师使用 AE(Adobe After Effects)到各端开发者实现动画的工具流。 UED 提供动画 json 文件即可, 开发者就…

品牌发言稿怎么写?纯干货

品牌发言稿的重要性不言而喻,它不仅代表着品牌形象,更是沟通品牌与消费者、合作伙伴的桥梁。如何撰写一篇高质量的品牌发言稿,成为许多品牌关注的焦点。伯乐网络传媒十多年文案撰写经验,今天就来给大家讲一讲。 一、品牌发言稿的组…

跨服务器迁移nextcloud数据

背景 阿里云最近做活动,99一年的2U2G的服务器,比我原来的1U1G的服务器不知道高到哪里去了,于是决定迁移服务器数据到另一台主机上。原先的计划是直接做一个自定义镜像,然后复制到另一台主机就行,结果发现旧主机是aliyunOS,新主机不想踩这个坑了,决定换成乌班图,因此决定重新搭…

Redis缓存设计

文章目录 1 缓存的收益与成本分析1.1 收益1.2 成本 2 缓存更新策略的选择和使用场景2.1 LRU/LFU/FIFO算法剔除2.2 超时剔除2.3 主动更新2.4 缓存更新策略对比 2.5 最佳实践 3 缓存粒度控制方法3.1 缓存全部数据3.2 缓存部分数据缓存粒度控制方法对比 4 缓存穿透问题优化4.1 什么…

所有网站都需要使用SSL证书?

SSL证书对于网站的重要性,简单来说就是: 保护隐私:就像给你的信封加了密码锁,SSL证书让网站和用户之间的所有交流都变得保密。当你在网站上输入密码、银行卡号等敏感信息时,有了SSL证书,这些信息就会被加密…

分表?分库?分库分表?实践详谈 ShardingSphere-JDBC

如果有不是很了解ShardingSphere的可以先看一下这个文章: 《ShardingSphere JDBC?Sharding JDBC?》基本小白脱坑问题 阿丹: 在很多开发场景下面,很多的技术难题都是出自于,大数据量级或者并发的场景下面的。这里就出…

算法打卡day37|动态规划篇05| Leetcode1049.最后一块石头的重量II、494.目标和、474.一和零

算法题 Leetcode 1049.最后一块石头的重量II 题目链接:1049.最后一块石头的重量II 大佬视频讲解:最后一块石头的重量II视频讲解 个人思路 和昨天的分割等和子集有些相像,这道题也是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小&am…

Discord注册教程:Discord刚注册就被封怎么办?附申诉教程!

Discord如今在海外社交媒体平台中迅速崛起,许多社交媒体营销人员也纷纷利用其社群特性进行推广,Discord注册也就成为社媒营销人员必经之路。然而,很多人注册Discord账号时常常会想:“在国内使用Discord会封号吗?”事实…

3d模型怎么取消光标轴定位---模大狮模型网

取消光标轴定位可以帮助您将3D模型的旋转、缩放和移动操作重置为全局坐标系。不同的3D建模软件可能有不同的方法来取消光标轴定位。以下是一般情况下在常见的3D建模软件(例如Blender、Maya、3ds Max等)中取消光标轴定位的方法: Blender中取消光标轴定位:…

【Canvas技法】图解绘制圆弧的重要函数 arc(x,y,r,startAngle,endAngle,clockWise)

【一图释疑】 【绘制上图用代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>Html5/Canvas中绘制圆弧的重要函数 arc(x,y,r,startA…

2024.4.1-day06-认识 CSS(三大特性、引入方式)

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; day06-认识 CSS(三大特性、引入方式) 文章目录 day06-认识 CSS(三大特性、引入方式)作业…

Chatgpt掘金之旅—有爱AI商业实战篇|内容策展业务|(八)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、AI技术创业内容策展业务有哪些机会&#xff1f; 人工智能&#xff08;AI&#xff09;技术作为当今科技创新的前沿领域&#xff0c;为创业者提供了广阔的机会和挑战。随着…

JavaScript - 你知道Ajax的原理吗?如何封装一个Ajax

难度级别:中高级及以上 提问概率:75% 想要实现Ajax,就需要创建它的核心通信对象XMLHttpRequest,通过核心对象的open方法与服务端建立连接,核心对象的send方法可以将请求所需数据发送给服务端,服务端接收到请求并做出响应,我们通过核心对象…

Linux:冯·诺依曼结构 OS管理机制

Linux&#xff1a;冯诺依曼结构 & OS管理机制 冯诺依曼结构OS管理机制OS对下层硬件的管理OS对上层用户的服务 冯诺依曼结构 我们常见的计算机&#xff0c;比如笔记本&#xff0c;台式电脑。以及一下不常见的计算机&#xff0c;比如服务器&#xff0c;几乎都遵循冯诺依曼体…

积木-蓝桥每日真题

0积木 - 蓝桥云课 (lanqiao.cn) 题目描述 小明用积木搭了一个城堡。 为了方便&#xff0c;小明在搭的时候用的是一样大小的正方体积木&#xff0c;搭在了一个n行m列的方格图上&#xff0c;每个积木正好占据方格图的一个小方格。 当然&#xff0c;小明的城堡并不是平面的&#x…

说说对WebSocket的理解?应用场景?

一、是什么 WebSocket&#xff0c;是一种网络传输协议&#xff0c;位于OSI模型的应用层。可在单个TCP连接上进行全双工通信&#xff0c;能更好的节省服务器资源和带宽并达到实时通迅 客户端和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c…

学习嵌入式可以胜任哪一些行业?

嵌入式技术之应用范围甚广&#xff0c;其多见于机器人、无人机、医疗器械以及军工等领域&#xff0c;为学习者带来诸多广泛之职业机遇。嵌入式工程师于此诸领域中扮演关键之角色&#xff0c;负责解决硬件平台适配等诸问题&#xff0c;以为创新提供支撑之力。 虽嵌入式技术与日…