想在爱芯派上拥有一个图像文字识别机吗?让 OCR 来帮你实现愿望!
前言
我们是否经常在为无法提取图像中的文字信息而苦恼?看到有趣的图片想复制其中的文字,又或者是旅行中想获得陌生语言的含义却无法知道文字,这时候就由 OCR 闪亮登场来帮你实现愿望。
- 以下为在爱芯派进行文字识别(OCR)后的效果图
文章补充说明
本文基于 prophet-mu 原文 进行整理以及补充发布。
什么是 OCR
OCR 是光学字符识别的缩写,是一种将扫描或拍摄的文档和图像中的文字转换为数字格式的技术。相对于传统的 OCR 方法来说,它更多的是限定于文档类的识别,但是发展至今 OCR 的概念也被拓宽了很多可以表述为文字图像识别,主要是自然场景的文字识别。
自然场景中的图像信息相对于文本类文档信息更加的丰富以及复杂,因此识别的难度要远大于文本类的文档识别;比如在每一种语言里可能还包含多种字母;每种字母又可以有不同的大小、颜色、字体、亮度、对比度等;同时文字的排列和对齐方式也不尽相同,横向、竖向、弯曲的情况都会出现;图像的非文字区域可能有与文字区域相似的纹理,比如窗户、树叶、栅栏、砖墙等。因为拍摄角度的问题,图像文字还存在形变问题(透视变换、仿射变换等)。此外,光照、低对比度、模糊断裂、残缺文字等也提升了文本检测和识别的难度。
能做什么
OCR 技术作为机器视觉领域的一个非常重要的垂直领域,涉及的应用领域非常丰富,不同领域也出现了非常多的产品及解决方案,具体列举如下:
- 票据类识别:增值税发票识别、支票识别、承兑汇票识别、银行票据识别、营业执照识别、物流快递识别;
- 文字信息结构化视频类识别:主要有字幕识别和文字跟踪;
- 其他识别:二维码识别、一维码识别、车牌识别、数学公式识别、物理化学符号识别、音乐符号识别、工程图识别、流程图识别、古迹文献识别、手写输入识别;
除了我们列举到的还有自然场景下的文字识别、菜单识别、横幅检测识别、图章检测识别、广告类图文识别等围绕审核相关的业务应用。
关于 OCR 更多的资料以及知识请关注:深度学习板块
该怎么做
上文我们了解到了什么是 OCR 以及在实际落地领域上的应用,接下来我们将阐述如何在爱芯派上实现 OCR 的图像文字识别。
本文提供的方法是基于现成的 api 来在 爱芯派 上实现 OCR 的识别的,如果有小伙伴想要自行训练及制作属于自己的 OCR 训练集,可前往 深度学习板块 学习相关知识。
准备工作
照例阐述使用前的基本环境以及硬件准备工作。
- 硬件:爱芯派
参考资料说明:浏览以下文章快速了解 爱芯派
硬件以及上手指南。
M3axpi 官方介绍:wiki.sipeed.com/m3axpi
MAIX-III AXera-Pi 系列文章:开箱之硬件初体验
MAIX-III AXera-Pi 系列文章:上手之丝滑玩转 AI 板卡【一】
MAIX-III AXera-Pi 系列文章:上手之丝滑玩转 AI 板卡【二】
- 使用环境
本文以 Windows10 系统为例,首先参考以下文章学习连接爱芯派(推荐使用 SSH 登录).
如何使用爱芯派网口进行 SSH 通信(推荐)
爱芯派系统使用手册
如何在 Mobaxterm 使用 SSH
基于 Tesseract 实现文字识别
Tesseract:是一款开源的 OCR 识别引擎,最初 Tesseract 由惠普实验室开发后贡献开源由 Google 在进行维护以及优化开发,我们可以使用 Tesseract 来实现(OCR)文字识别。
相关资料说明
使用 apt 安装
基于上文的使用环境的准备工作,默认大家已登录进 爱芯派 的系统内。
第一步:登录上系统后使用 cd /home
进入 home 的目录
第二步:使用下文命令行进行安装即可
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
体验 OCR 文字识别
第一步:先准备一张需要识别的图片
第二步:在终端输入以下命令后系统会对图片进行识别
tesseract axpi.jpg stdout -l chi_sim
第三步:系统会返回打印出识别后到的文字信息
基于百度 API 实现文字识别
百度的 OCR 调用是可自行选择高精度的 API 并且还是免费使用,每月有一定的免费次数(薅羊毛辣),只需要在注册后申请一个自己的应用即可获取相应的 API_KEY
和 SECRET_KEY
。
相关平台:百度 AI 开放平台-文字识别
体验 OCR 文字识别
第一步:先准备一张需要识别的图片
第二步:获取相关的 API_KEY
和 SECRET_KEY
并在下文修改相关的路径以及参数
以下是相关的 ocr.py 代码
import base64
import urllib
import requests
from PIL import Image,ImageFont,ImageDraw
API_KEY = "你的AK"
SECRET_KEY = "你的SK"
img_path = "axpi.jpg"#修改图片的路径
im = Image.open(img_path)
draw = ImageDraw.Draw(im)
def main():
url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate?access_token=" + get_access_token()
# image 可以通过 get_file_content_as_base64("C:\fakepath\f4451a86a76c9e6fc7ec2a8a64d9919.jpg",True) 方法获取
payload='image=' + get_file_content_as_base64(img_path,True)
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
for i in response.json()['words_result']:
print(i['words'])
#draw.text(xy=(i['location']['left'],i['location']['top']),text=i['words'],fill=(255,0,0))
draw.rectangle((i['location']['left'],i['location']['top'],i['location']['left']+i['location']['width'],i['location']['top']+i['location']['height']),outline=(255,0,0))
im.show()
# print(response.text)
def get_file_content_as_base64(path, urlencoded=False):
"""
获取文件base64编码
:param path: 文件路径
:param urlencoded: 是否对结果进行urlencoded
:return: base64编码信息
"""
with open(path, "rb") as f:
content = base64.b64encode(f.read()).decode("utf8")
if urlencoded:
content = urllib.parse.quote_plus(content)
return content
def get_access_token():
"""
使用 AK,SK 生成鉴权签名(Access Token)
:return: access_token,或是None(如果错误)
"""
url = "https://aip.baidubce.com/oauth/2.0/token"
params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
return str(requests.post(url, params=params).json().get("access_token"))
if __name__ == '__main__':
main()
第三步:把上述代码文件放进 /home
目录下并运行 python3 ocr.py
命令行
第四步:终端会打印出在图片里识别到的文字信息
拓展使用:还可以使用 Jupyter 来打开运行此应用,搭配 Pillow 一起使用绘制检测到文字的位置。
章节小结
如何在爱芯派上实现 OCR 识别图像文字的小章就到这里结束啦!后续还有相关的视觉基础章节(小编已在快马加鞭写中~)关于爱芯派相关的专栏教程即将也要步入尾声了,希望这些文章能让大家学习到一点点新的知识(满足辣)!
回顾往期文章
MAIX-III AXera-Pi 系列文章(1):新一代 3.6T 视觉 AI Linux 板卡面世
MAIX-III AXera-Pi 系列文章(2):丰富多采的 AI 应用
MAIX-III AXera-Pi 系列文章(3):Debian 系统 & 开箱案例
MAIX-III AXera-Pi 系列文章:开箱之硬件初体验
MAIX-III AXera-Pi 系列文章:上手之丝滑玩转 AI 板卡【一】
MAIX-III AXera-Pi 系列文章:上手之丝滑玩转 AI 板卡【二】
YOLOv8 目标检测:训练自定义数据集并部署到爱芯派(一)
YOLOv8 目标检测:训练自定义数据集并部署到爱芯派(二)
还想了解更多内容?
内容 | 链接 |
---|---|
AXera-Pi 产品介绍 | https://mp.weixin.qq.com/s/JIvVprWlQPvE7bTxozAG_Q |
AXera-Pi 产品资料 | wiki.sipeed.com/m3axpi |
海外购买渠道 | https://fr.aliexpress.com/item/1005005016931077.html |
国内购买渠道 | https://item.taobao.com/item.htm?id=682169792430 |
AI 开发工具链 | https://pulsar-docs.readthedocs.io/ |
AI 示例仓库 | https://github.com/AXERA-TECH/ax-samples |
Python API | https://github.com/junhuanchen/ax-pipeline-api |
系统 BSP SDK | https://github.com/sipeed/axpi_bsp_sdk |
基础 C++ SDK | https://github.com/sipeed/libmaix |
进阶 C++ SDK | https://github.com/AXERA-TECH/ax-pipeline |
AXERA 技术交流群 | 专供 AI ISP 技术交流:139953715 |
荔枝 MaixPy3 AI 交流群 | 产品开箱小白答疑:756313869 |
AI 训练平台 | http://maixhub.com |
在线文档 | http://wiki.sipeed.com |
交流社区 | http://bbs.sipeed.com |
开源组织 | http://github.com/sipeed |
官方推特 | https://twitter.com/SipeedIO |
商业邮箱 | support@sipeed.com |