python常用的OCR文字识别与图片定位方式
python常用的OCR文字识别与图片定位方式
- 前言
- 统一版本
- 更换pip源
- 1. Python调用百度文字识别ocr的实现方式
- 1.1 使用PyCharm安装依赖
- baidu-aip
- chardet
- 1.2 代码实现
- 1.3 运行结果展示
- 2. Python实现图片匹配与定位
- 2.1 安装依赖
- aircv
- opencv-python
- 2.2 python代码实现
- 2.3 运行结果展示
- 3.python调用PaddleOCR
- 3.1 安装依赖
- paddlepaddle
- paddleocr
- 3.2 python中的代码
- 3.3 执行结果
- 3.4 运行报错(所踩的坑)
前言
统一版本
如果想一次性调用成功,最好与本教程所用的版本保持一致
python版本:
3.10
PyCharm版本:PyCharm 2022.1.2
更换pip源
平常使用python自带的pip进行安装是比较慢的,该处推荐几个自己用着比较快的源,可以进行替换
百度源:
https://mirror.baidu.com/pypi/simple
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
如果使用的是命令窗口的形式,只需要在安装的包名后面添加个 -i https://mirror.baidu.com/pypi/simple即可,如下所示
pip install paddlepaddle==2.4.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
如果使用的是PyCharm
1.在左下角找到
Python Packages
2点击设置按钮
3.起个名字
4.输入源
5.点击确定
6.此时PyCharm中的源添加完毕,在使用Python Interpreter的时候,即可选择对应的源进行下载,提高下载速度
按照如图所示即可
1. Python调用百度文字识别ocr的实现方式
1.1 使用PyCharm安装依赖
首先,使用PyCharm创建好一个项目,设置如图所示
使用PyCharm创建完成一个项目后,开始安装必要的插件,本案例使用的是Python Interpreter。
路径为File–>Settings–>Project:你的项目名称–>Python Interpreter
如下图所示,备注:示例中是已经安装后的,如果是首次创建,则只有三个包
开始安装运行所需要的依赖
baidu-aip
版本为4.16.8
点击图中红框中的 + 号
在搜索框中,输入要安装的包名,选择合适的源(此处请参考前言中的更换pip源,如果未添加其他的源,则只显示一个baidu-aip
)进行下载,如图所示,可以选择版本,确定好版本后,点击下面的Install Package进行安装即可。接下来的包安装与该方式相同,如果有其他包安装的话,不再进行截图,下载方式参考该处即可
chardet
具体安装详情请参考baidu-api,版本为5.1.0
1.2 代码实现
准备工作
需求自己先在百度工作台上找到对应的APP_ID 、API_KEY 、SECRET_KEY
具体怎么找请自行百度
经过前面的步骤,已经安装了启动代码所需要的依赖,此时,把该代码复制到自己的项目中,稍作修改即可
import os.path
from aip import AipOcrif __name__ == '__main__':""" 你的 APPID AK SK """APP_ID = '你的APP_ID'API_KEY = '你的API_KEY 'SECRET_KEY = '你的SECRET_KEY 'client = AipOcr(APP_ID, API_KEY, SECRET_KEY)""" 相对路径,在项目跟路径下,创建个img文件夹,然后文件夹中有个zhuogui.png图片,用来进行测试是否可用 """img_dir_path = r'img'imagepath = os.path.join(img_dir_path, 'zhuogui.png')with open(imagepath, 'rb') as fp:"""识别到信息以字典形式返回"""dic = client.general(fp.read())print(dic)"""遍历字典与想要的文案对比如果对比到就返回坐标"""exit(0)
1.3 运行结果展示
效果如下图所示
2. Python实现图片匹配与定位
该实现方式适用于以下场景:
如给定一张小图片,判断该图片是否在另一张图片中;或者在一张大图片中,截出来一小部分图片,然后定位该图片在大图中的位置
2.1 安装依赖
在运行项目前,需要先安装如下依赖,具体安装方式,请参考标题1中的baidu-aip
的方式进行安装
aircv
版本为1.4.6
opencv-python
版本为4.6.0.66
2.2 python代码实现
import aircv as ac# Press the green button in the gutter to run the script.
if __name__ == '__main__':# 源文件,要在该图片中进行查找,被注释的方式为java传参# imsrc = ac.imread(sys.argv[1])imsrc = ac.imread('D:\code\yujian\yujian-admin\src\main\\resources\static\image\coordinate.png')# 查找的图标,需要查找的图标,被注释的方式为java传参# imobj = ac.imread(sys.argv[2])imobj = ac.imread('D:\code\yujian\yujian-admin\src\main\\resources\static\image\c0002.png')# {'confidence': 0.5435812473297119, 'rectangle': ((394, 384), (394, 416), (450, 384), (450, 416)), 'result': (422.0, 400.0)# confidence:匹配相似率# rectangle:匹配图片在原始图像上四边形的坐标# result:匹配图片在原始图片上的中心坐标点,也就是我们要找的点击点# similarity = ac.imread(sys.argv[3])# match_result = ac.find_template(imsrc, imobj, 0.70)match_result = ac.find_template(imsrc, imobj, 0.70)if match_result is not None:match_result['shape'] = (imsrc.shape[1], imsrc.shape[0]) # 0为高,1为宽print(match_result);
2.3 运行结果展示
如下图所示,返回小图片在大图片中的坐标位置
3.python调用PaddleOCR
详细信息,可去飞桨官网进行查看,本教程只介绍简单的使用与安装
3.1 安装依赖
在运行项目前,需要先安装如下依赖,具体安装方式,请参考标题1中的baidu-aip
的方式进行安装
paddlepaddle
版本为2.4.1
paddleocr
版本为2.6.1.2
备注:
1.安装包较大,时间较长,PyCharm导入时间也长,耐心等待即可
2. 安装完成后,可以先看下numpy包的版本,如果是1.24.0,则更换为1.23.2即可,否则运行时会报错
3.2 python中的代码
import os
from paddleocr import PaddleOCR
import cv2
from math import *
import numpy as npdef img_match(img_address):ocr = PaddleOCR(use_angle_cls=False, lang="ch", use_gpu=False)# 该处注释掉了其他的字库,如果需要下面的字库,可在github上自行下载,该教材以上面的简单字库为例,复制即用#ocr = PaddleOCR(use_angle_cls=True, lang="ch",# rec_model_dir='../models/ch_PP-OCRv3_rec_slim_infer/',# cls_model_dir='../models/ch_ppocr_mobile_v2.0_cls_slim_infer/',# det_model_dir='../models/ch_PP-OCRv3_det_slim_infer/')src_img = cv2.imread(img_address)h, w = src_img.shape[:2]big = int(sqrt(h * h + w * w))big_img = np.empty((big, big, src_img.ndim), np.uint8)yoff = round((big - h) / 2)xoff = round((big - w) / 2)big_img[yoff:yoff + h, xoff:xoff + w] = src_img# 文字识别matRotate = cv2.getRotationMatrix2D((big * 0.5, big * 0.5), 0, 1)dst = cv2.warpAffine(big_img, matRotate, (big, big))result = ocr.ocr(dst, cls=True)results = ""for text in result:for value in text:results = results + str(value[1])print(results)if __name__ == '__main__':img_dir_path = r'img'imagepath = os.path.join(img_dir_path, 'zhuogui.png')img_match(imagepath)# 此处可以更换成字符串的绝对路径,如果更换为绝对路径的话,上面三行需要删除# img_match("G:\\360MoveData\\Users\\86177\\Desktop\\zhuogui.png")
3.3 执行结果
正确执行结果如下(如果执行的时候报错,请看3.4 运行报错(所踩的坑)
)
3.4 运行报错(所踩的坑)
如果遇到该报错,请查看安装的依赖的numpy,更换成1.23.2即可
python常用的OCR文字识别与图片定位方式相关推荐
- OCR识别缺点_常用的OCR文字识别软件有哪些_软件动态论坛
随着大家办公需求的增加,办公软件如雨后春笋般纷纷面世,旨在提高大家的工作效率,OCR文字识别软件便是不可缺少的办公软件之一.那么,有哪些专业又好用的OCR文字识别软件呢?小编来为大家推荐几款,以供参考 ...
- 常用的OCR文字识别软件有哪些
随着大家办公需求的增加,办公软件如雨后春笋般纷纷面世,旨在提高大家的工作效率,OCR文字识别软件便是不可缺少的办公软件之一.那么,有哪些专业又好用的OCR文字识别软件呢?小编来为大家推荐几款,以供参考 ...
- 在线 ocr 文字识别 和 图片色值选取
原文链接: 在线 ocr 文字识别 和 图片色值选取 上一篇: js 颜色库 chroma 和 color 下一篇: 为ramda添加类型 图片颜色选取 https://tool.ahaoboy.co ...
- Python制作简易OCR文字识别系统
前不久看了一篇"如何使用Python检测和识别车牌?"用OpenCV对输入图像进行预处理,用imutils将原始输入图像裁剪成所需的大小,用pytesseract将提取车牌字符转换 ...
- python百度云ocr文字识别软件_基于百度云的OCR识别(Python)
2019年7月3日早上,在百度AI开发者大会上,一个来自山西的青年,将一瓶矿泉水浇在了同样来自山西的李彦宏身上. 可以回顾一下 https://b23.tv/av57665929/p1 ,着实让人一惊 ...
- OCR文字识别软件如何操作?
现如今OCR文字识别软件已经出现在我们的日常生活中,许多的东西也越来越趋向于简便化.比如说,之前提交一份资料需要去打印店里纸质打一下来.现在许多的方式正在一步一步发生的改变,有的纸质资料可以通过OCR ...
- 使用QQ进行OCR文字识别
前言 OCR文字识别为将图片文字识别成电子文本.现在有很多工具可以实现该功能,但大部分都要付费.值得一提的是,QQ客户端免费提供该功能,识别文本后可以复制或翻译,效果还算可以,下面进行相关的设置,使该 ...
- python图片转文字easyocr_Easy Screen OCR——文字识别转换软件
Easy Screen OCR for Mac(文字识别转换工具)v1.4.0免费版带给大家!Easy Screen OCR文字识别转换工具可以帮助用户快速的获得图片中的文字内容.使用非常简单,只需拖 ...
- 图片提取文字软件哪款比较好用?ocr文字识别算不算是人工智能?
图片提取文字软件哪款比较好用?ocr文字识别算不算是人工智能? 扫描软件的用途特别广泛,大家想要下载这类软件的话,可以在网上挑选一款免费发.接下来小编就给大家介绍免费扫描软件哪款比较好用?ocr文字识 ...
最新文章
- 【转载】Linux下安装、配置、启动Apache
- 基础设施即代码:Terraform和AWS无服务器
- SAP PP COR1事务里下达工单,保存时报错:No data was found for the input values
- 网站优化新方式亟需创新
- wrapper包装java_java Object 类 与 Wrapper包装类
- python语言常量_python---01.各类计算机语言,python历史,变量,常量,数据类型,if条件...
- 我的Markdown的利器——Markdown Here、有道云笔记、iPic
- JAVA面试要点006---.net中的委托与java中的代理模式和委托
- VTK图形模型主要对象
- word---自定义编号样式
- Android程序设置软件图标
- 使用Xcode Instruments Leak解决内存泄漏问题
- 梦想成真,喜获微软MVP奖项,微软MVP FAQ?
- Linux vi 替换字符串
- cuda10.0及其驱动纯净卸载(笔记)
- 华为B610-4E光猫固件Shell补全及升级最新的050固件
- 倍福--实现和西门子的profinet
- 一文彻底搞懂替罪羊树
- Pygame小游戏之俄罗斯方块凭什么火了30年?(史上最畅销单机游戏)
- vht160什么意思_802.11n 中HT20 HT40是什么意思
热门文章
- 大学计算机实验二报告表答案,北理大学计算机实验基础实验二实验报告表答案...
- 优思学院|ISO13485 的五十个问题|值得收藏
- 【day5-c/c++入门题目-关于“约瑟夫问题”那些事】
- 信息系统项目管理师-高级-计算类-进度管理
- 性能测试——LoadRunner——run-time setting——pacing设置——迭代间隔时间设置
- SWUST OJ 953: 单链表的删除操作的实现
- 大数据架构师在关注什么?
- C#基于Twain协议调用扫描仪,设置多图像输出模式(Multi image output)
- 直流电机_脉宽调制调速(PWM)
- 微信公众号自定义分享标题、图片、链接