【OpenCV】OCR文档识别
文章目录
- 前言
- 一、pytesseract
- 二、PPOCR
- 三、百度API
- 四、TrWebOCR
- 总结
前言
OCR文档识别方法有多种,例如EasyOCR,PP-OCR,cnOCR,PP_OCR等。
本文介绍pytesseract,百度API和TrWebOCR方法以及PP_OCR四种方法。
其实只有第一种方法使用了OpenCV的相关算法。
一、pytesseract
参考这篇文章,写的很详细,不在赘述。
opencv项目实战(2)——文档扫描OCR识别
二、PPOCR
百度的产品。
先安装这3个库。
pip install paddlepaddle
pip install shapely
pip install paddleocr
在py文件同一级目录下放置一个待识别文字的图片。
然后执行以下代码:
from paddleocr import PaddleOCR, draw_ocr
ocr = PaddleOCR(use_angle_cls=True, lang="ch")
# 输入待识别图片路径
img_path = r"yy.jpg"
# 输出结果保存路径
result = ocr.ocr(img_path, cls=True)
for line in result:print(line)from PIL import Image
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
im_show = draw_ocr(image, boxes, txts, scores)
im_show = Image.fromarray(im_show)
im_show.show()
三、百度API
还是分两步走,第一步获取鉴权数据。
# import requests # # client_id 为官网获取的AK, client_secret 为官网获取的SK
# host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【client_id 】&client_secret=【client_secret 】'
# response = requests.get(host)
# if response:
# print(response.json())
搜索百度AI进去控制台,在下图位置找到应用。
创建应用获取SK和SK。
获取鉴权Token。运行以下代码获取的到access_token,请注意,不是refresh_token。
import requests # client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【AK】&client_secret=【SK】'
response = requests.get(host)
if response:print(response.json())
第二步,打开图片上传。
import requests
import base64'''
通用文字识别(高精度版)
'''request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
# 二进制方式打开图片文件
f = open('E:\VSCode\EasyOCR/555.jpg', 'rb')
img = base64.b64encode(f.read())params = {"image":img}
access_token = '24.3772970dc5e6f054177e3fb7.2592000.1652151337.282335-25936381'#从第一步获取的Token
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:print (response.json())
四、TrWebOCR
这里是用群晖的docker部署TrWebOCR环境。
端口配置如下:
浏览器访问IP:8089
识别效果如下:
还有一种方法通过调用API方法实现,同百度API的区别是,百度API有500还是1000的免费额度,超过付费,而这个方法是免费的。但是精度没有百度API好。
百度是一家好公司,有能力就支持一下。
import requests
import json
url = 'http://192.168.8.177:8089/api/tr-run/'
img1_file = {'file': open('E:\VSCode\EasyOCR/555.jpg', 'rb')
}
res = requests.post(url=url, data={'compress': 0}, files=img1_file)data=res.text
print(res.text)jsonobj = json.loads(data)
toCntPercent = jsonobj['data']['raw_out']
print(toCntPercent)#把文字提取出来
mystr = str(toCntPercent)
obj=re.compile(r"(.*?)'(?P<temp>.*?)'",re.S)
all_date=obj.finditer(mystr)
for it in all_date:mydate=it.group("temp")print(mydate)
图片如下:
提取结果:
总结
建议使用PP-OCR。群晖不一定每个人都有,但是docker部署,只要是linux系统,基本上按照TrWebOCR的Gitee网页说明的几个步骤部署还是很快的。详情看TrWebOCR链接
【OpenCV】OCR文档识别相关推荐
- OCR文档识别的工作原理
云脉文档管理系统便是一款基于OCR.图像处理及秒级全文检索等技术的企业级数据管理方案.其核心技术就是OCR,那OCR是什么呢,其实现的核心步骤又是什么呢? Ocr是什么?OCR (Optical Ch ...
- OCR文档识别——数据录入工厂
数据录入工厂特色 识别核心 软件内置文通科技最新研发的高性能文字识别引擎,支持中英日韩四国文字以及对英文的混排,识别率达99.8%以上. Unicode编码 采用UNICODE国际编码标准.系统可在一 ...
- Opencv实战——OCR文档扫描
文章目录 前言 一.安装Tesseract-OCR 二.文档扫描 1.需要透视变换的图像 2.直接Tesseract-OCR 总结 前言 这里实现文档扫描主要是依靠Tesseract,Tesserac ...
- OCR应用(证件识别、文档识别)
1.OCR识别-证件识别 • 高效--识别率高达99.7%,单张识别速度小于1秒,领先业内: • 方便--该识别服务更新维护方便,企业可自行进行更新维护: • 通用--支持APP端.PC 端.H5端. ...
- 走进AI时代的文档识别技术 之文档重建
导读:作者系腾讯QQ研发中心--CV应用研究组的totoralin.本文主要介绍基于深度学习的文档重建框架,通过文档校正.版面分析.字体识别和阅读排序将纸质文档智能转成可编辑的电子文档.相比较传统的O ...
- 在做文档识别OCR时遇到问题error: (-215:Assertion failed) in function 'contourArea'解决方法
在做文档识别OCR时遇到问题 error: OpenCV(4.2.0) /io/opencv/modules/imgproc/src/shapedescr.cpp:315: error: (-215: ...
- OCR识别技术 文档识别的三种形式
如何将文档上的文字转换成可编辑的文字,通俗一点说,就是将纸质上的文字转换成电子版形式的文字内容: 文档识别通常有三种形式,其利用的核心技术都是OCR文字识别技术. 步骤如下: 一.通过扫描,识别文字信 ...
- 利用python进行纸质文档识别(一)图像旋转矫正
前言 这学期我们上了一门软件工程课和数字图像处理课,软件工程课课设要求大家设计一款软件.作为一个学生助理,我早就对学校的问卷调查不满意了,填写完的纸质表格竟然还要输入成电子表格,人工手动输入,未免也太 ...
- 云脉OCR文档管理软件档案加工管理必备
现在工作中每个公司都会有大量的文件需要管理,针对存储.识别.管理查找等实际工作中让每个人都很头疼难题.厦门云脉为了解决这些问题特别推出了云脉OCR文档管理(PC版). 云脉OCR文档管理基于深度学习的 ...
最新文章
- 【Treap】bzoj1588-HNOI2002营业额统计
- linux内核经常用到的 一个概念“原子操作“
- (转)OpenNLP进行中文命名实体识别(下:载入模型识别实体)
- Web在线操作Office之Word
- php中的rand,php rand() 随机数生成的方法介绍
- 使用pdb调试python脚本
- java 取商_Java读取word文档,转换为网页
- 七内部排序算法汇总(插入排序、Shell排序、冒泡排序、请选择类别、、高速分拣合并排序、堆排序)...
- 《MATLAB智能算法30个案例》:第5章 基于遗传算法的LQR控制器优化设计
- 微信背后的产品观,背后究竟是什么?
- Edge浏览器安装Tampermonkey插件
- UWP开发入门(八)——聊天窗口和ItemTemplateSelector
- 高速PCB设计系列基础知识67 | 尺寸与公差标注内容与通用知识
- 超酷flv网页播放器 CKplayer V5.7
- JavaSE个人复习式整理知识点之函数式接⼝、Stream流、⽅法引⽤
- 硬盘柱面损坏怎么办_硬盘扇区损坏怎么办
- XSS原理dvwaxssvalidator使用
- 微商城系统之商家平台任务自动分析处理系统_OctShop
- 零件加工 贪心 题解
- JXTA的安装和使用
热门文章
- 词霸天下---词根227【-gress- = -grad- = -gred- = -gre(e)- 步,走】
- U盘产品如何做好软文推广利用软文来打造为产品引流宣传
- 第一部分 数理逻辑 第三章 命题逻辑的推理理论
- 洞洞板上的TQFP芯片的焊接模式
- 解除隐藏已购项目_从AppStore的已购项目中隐藏已经购买的APP
- python中使用matplotlib.pyplot画函数图像
- 华中师范大学计算机学院学分绩,华中师范大学学生学业成绩表(模板)
- 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你
- Android 10 SystemUI 如何添加4G信号和WiFi图标
- 汽车电子之功能安全介绍