首页 > 编程语言 >【AI测试】已落地-python文字图像识别PaddleOCR

【AI测试】已落地-python文字图像识别PaddleOCR

时间:2023-10-06 11:06:37浏览次数:49  
标签:识别 图像识别 AI PaddleOCR 75.0 result https ocr


python文字图像识别PaddleOCR

PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力开发者训练出更好的模型,并应用落地。

国产之光,百度开源的paddle ocr

开源地址:https://github.com/PaddlePaddle/PaddleOCR

官方电子书:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/ocr_book.md

下载安装

文档:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/quickstart.md

说明: 本文主要介绍PaddleOCR wheel包对PP-OCR系列模型的快速使用

安装PaddlePaddle

  • 您的机器安装的是CUDA9或CUDA10,请运行以下命令安装
pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple
  • 您的机器是CPU,请运行以下命令安装
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

更多的版本需求,请参照https://www.paddlepaddle.org.cn/install/quick中的说明进行操作。

安装PaddleOCR whl包

pip install "paddleocr>=2.0.1" # 推荐使用2.0.1+版本
  • 对于Windows环境用户:直接通过pip安装的shapely库可能出现[winRrror 126] 找不到指定模块的问题。建议从https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely下载shapely安装包完成安装。

我的安装

我是win11,电脑显卡不是NVIDIA,所以只能用CPU加速,建议使用GPU,速度更快。

pip install paddleoc
pip install paddlepaddle

我直接这样下载的,用后面的简单使用代码可以直接跑起来。

简单使用

同样我们使用上次用到的图片进行识别。

【AI测试】已落地-python文字图像识别PaddleOCR_人工智能

# -*- coding: utf-8 -*-
'''
@Time : 2023/6/21 11:29
@Email : [email protected]
@公众号 : 梦无矶的测试开发之路
@File : python_paddleocr文字识别_demo01.py
'''
__author__ = "梦无矶小仔"

from paddleocr import PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, use_gpu=False)  # 使用CPU预加载,不用GPU
img_path = 'imgs\\csdn_homepage.png'
text_list = ocr.ocr(img_path, cls=True)  # 打开图片文件
# print(text_list)
# 打印所有文本信息
for t in text_list[0]:
    print(t[1][0])

【AI测试】已落地-python文字图像识别PaddleOCR_开发语言_02

这是输出结果,是不是完爆上次那个pytesseract的中文识别准确度?(paddleOCR在这张图上的中文识别准确率为100%)

相关参数

打印上文中的text_list进行分析。

[[
    [[[10.0, 16.0], [158.0, 16.0], [158.0, 39.0], [10.0, 39.0]], ('梦无矶码龄4年', 0.9589648246765137)],
        [[[12.0, 58.0], [146.0, 58.0], [146.0, 75.0], [12.0, 75.0]], ('132.866总访问量', 0.9609718322753906)],
        [[[178.0, 58.0], [234.0, 58.0], [234.0, 76.0], [178.0, 76.0]], ('58原创', 0.9998252987861633)],
        [[[265.0, 58.0], [361.0, 58.0], [361.0, 75.0], [265.0, 75.0]], ('22,079排名', 0.9822025299072266)],
        [[[391.0, 58.0], [475.0, 58.0], [475.0, 75.0], [391.0, 75.0]], ('1,275粉丝', 0.9867120981216431)],
        [[[505.0, 57.0], [591.0, 57.0], [591.0, 75.0], [505.0, 75.0]], ('119铁粉', 0.9969574213027954)],
        [[[622.0, 59.0], [701.0, 59.0], [701.0, 76.0], [622.0, 76.0]], ('学习成就', 0.9997559785842896)],
        [[[12.0, 91.0], [541.0, 91.0], [541.0, 105.0], [12.0, 105.0]], ('个人简介:从自动化测试进阶到测试开发的一枚小萌新,喜好记录自己的知识,嘿嘿~', 0.9711272716522217)],
        [[[10.0, 120.0], [115.0, 120.0], [115.0, 137.0], [10.0, 137.0]], ('IP属地:上海市', 0.9775674939155579)],
        [[[11.0, 150.0], [110.0, 150.0], [110.0, 167.0], [11.0, 167.0]], ('查看详细资料√', 0.9277077913284302)]

]]

结果是一个list,每个item包含了文本框文字识别置信度

paddleocr默认使用PP-OCRv4模型(--ocr_version PP-OCRv4),如需使用其他版本可通过设置参数--ocr_version,具体版本说明如下:

版本名称

版本说明

PP-OCRv4

支持中、英文检测和识别,方向分类器,支持多语种识别

PP-OCRv3

支持中、英文检测和识别,方向分类器,支持多语种识别

PP-OCRv2

支持中英文的检测和识别,方向分类器,多语言暂未更新

PP-OCR

支持中、英文检测和识别,方向分类器,支持多语种识别

ocr = PaddleOCR(**kwargs)

常用参数解析

更多命令行参数请阅读官方文档:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/whl.md

参数

含义

use_angle_cls

bool,设置是否使用方向分类器识别180度旋转文字

use_gpu

bool,设置是否使用GPU

page_num

int,支持输入pdf文件,指定推理前面几页,默认为0,表示推理所有页

lang

str,指定语言模型

rec

bool,设置为false表示单独使用检测

det

bool,设置为false表示单独使用识别

# result = ocr.ocr(img_path, det=False) 只执行识别
# result = ocr.ocr(img_path, rec=False) 只执行检测

常用的多语言简写包括

语种

缩写

语种

缩写

语种

缩写

中文

ch

法文

fr

日文

japan

英文

en

德文

german

韩文

korean

繁体中文

chinese_cht

意大利文

it

俄罗斯文

ru

全部语种及其对应的缩写列表可查看多语言模型教程:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/multi_languages.md

官方python脚本使用

相关代码我略有改动。

中英文与多语言使用

通过Python脚本使用PaddleOCR whl包,whl包会自动下载ppocr轻量级模型作为默认模型。

  • 检测+方向分类器+识别全流程
from paddleocr import PaddleOCR, draw_ocr

# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # 只需要运行一次,会自动帮你把模型进行下载。
img_path = 'imgs\\csdn_homepage.png'
result = ocr.ocr(img_path, cls=True)
for idx in range(len(result)):
    res = result[idx]
    for line in res:
        print(line)

# 显示结果
from PIL import Image
result = result[0]
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.save('imgs\\result01.jpg')

打印展示:

结果是一个list,每个item包含了文本框,文字和识别置信度

【AI测试】已落地-python文字图像识别PaddleOCR_人工智能_03

效果展示:

结果可视化

【AI测试】已落地-python文字图像识别PaddleOCR_开发语言_04

落地实践

1、基于以上这些简单的demo,目前已经将其落地在公司的自动化项目中,取得的效果也非常显著,相较于之前的图像识别技术,现在有文字识别加持,提高了UI自动化的准确性,目前非UI本身发生大架构变化,均可无障碍运行。建议使用GPU,目前落地方案采取的是GPU运算。

2、根据文本框的xy轴值,我们可以取中间值进行点击,个别需要偏离中心轴位置的元素进行通用封装(参考airtest的点击偏移)

3、从结果返回值中我们可以看到,拿出的文字是一块一块的,所以在识别的时候,我们可以根据需要,进行区分开精准识别,模糊识别,全部识别等方式进行业务封装。

4、基于游戏自动化,需要训练自己的艺术字体,也可以将字体进行打包丢进去跑。

5、各项封装及二次开发,模型训练在持续进行…

6、再次感谢百度飞浆,致敬!


标签:识别,图像识别,AI,PaddleOCR,75.0,result,https,ocr
From: https://blog.51cto.com/u_15800928/7722177

相关文章

  • 大数据与AI:解析智慧城市的幕后英雄
    文章目录1.智慧城市的定义与发展2.大数据:智慧城市的基石2.1大数据的概念与重要性2.2大数据的应用案例2.2.1智能交通管理2.2.2能源效率优化2.2.3城市规划与土地利用3.人工智能:智慧城市的大脑3.1人工智能的概念与重要性3.2人工智能的应用案例3.2.1智能垃圾分类3.2.2智能......
  • 区块链技术与AI:IT领域的未来合作伙伴
    文章目录1.区块链技术简介2.人工智能简介3.区块链与AI的合作3.1数据安全和隐私保护3.2去中心化AI模型3.3数据市场和激励机制4.区块链与AI的应用案例4.1健康医疗4.2物联网(IoT)4.3版权保护4.4供应链管理5.挑战与展望6.结论......
  • nvidia-smi指令报错:Failed to initialize NVML: Driver/library version mismatch NVM
    nvidia-smi指令报错:FailedtoinitializeNVML:Driver/libraryversionmismatchNVMLlibraryversion:535.113我是刚开始没有nvidia-smi命令,输入后,提示我安装。aptinstallnvidia-340#version340.108-0ubuntu5.20.04.2,oraptinstallnvidia-utils-390......
  • ChatGPT入门实战课 AI时代更具竞争力的开发者(完结)
    点击下载:ChatGPT入门实战课AI时代更具竞争力的开发者(完结)提取码:bx1lFlink是一款基于流处置的散布式计算框架,能够完成高性能、低延迟的实时数据处置和剖析。下面是一个示例代码,用于展现如何运用Flink从零开端构建实时风控系统。首先,我们需求在pom.xml文件中添加Flink的依......
  • 实现文档AI搜索,提高问题解决效率
    在当今的数字时代,以AI为动力的文档搜索变得越来越重要。随着在线提供信息的指数增长,传统的搜索方法通常效率低下且耗时。实施文档AI搜索可以显著提高搜索相关文档的效率和有效性。|在网站中实施文档AI搜索的好处很多首先,它通过提供无缝且直观的搜索过程来增强用户体验。借助文档AI......
  • Vue在main.js全局引入scss文件,组件里使用scss变量报错问题
    问题描述在写组件样式的时候,普通样式都没问题,一碰到$变量就errorModulebuildfailed(from./node_modules/sass-loader/dist/cjs.js):color:$normal-active-color;^Undefinedvariable.╷22│color:$normal-active-color;│......
  • 第四节人工智能 考点13 人工智能的概述 1.人工智能的概念 人工智能 (Artificial Int
    第四节人工智能考点13人工智能的概述1.人工智能的概念 人工智能(ArtificialIntelligence,AI)是研究怎样让计算机做一些通常认为需要智能才能做的事情,又称机器智能主要研究智能机器所执行的通常与人类智能有关的功能,如判断推理、证明、识别、感知、理解、设计、思考、规划、学......
  • 实测 亚马逊 AI 编程助手 Amazon CodeWhisperer(全网最全)
    文章作者:疯狂的驸马一、CodeWhisperer简介CodeWhisperer是亚⻢逊出品的一款基于机器学习的通用代码生成器,可实时提供代码建议。在编写代码时,它会自动根据我们现有的代码和注释生成建议。从单行代码建议到完整的函数,它可为我们提供各种大小和范围的个性化建议。亚马逊云科......
  • 关于 Failed to bind properties under 'sky.alioss.access-key-id' to java.lang.Str
    问题描述废话不多说,上截图解决方案问题出现的原因:因为自己没有按照格式去运行程序,在yml中把他们得位置向前一个单位就解决问题了......
  • 关于Async、Await的一些知识点
    在ASP.NETCore中,当一个HTTP请求到达服务器时,它会被分配给线程池中的一个线程来处理。该线程会执行相应的Controller方法。如果这个方法是一个异步方法并且使用了await关键字,那么在await的代码执行完毕之前,这个线程会被释放回线程池,可以用来处理其他的HTTP请求。当await的代码执......