百度PaddleOCR 3.0最新版本发布,本地体验

百度飞桨paddle,是百度旗下的开源深度学习平台。
官网:https://www.paddlepaddle.org.cn/

OCR是什么

OCR(光学字符识别,Optical Character Recognition)是一种将图像中的文字转换为可编辑文本的技术。它广泛应用于文档数字化、信息提取和数据处理等领域。OCR 可以识别印刷文本、手写文本,甚至某些类型的字体和符号。

简单的说,就是从图片里面、PDF或者表格的截图里面,抽取出来文字信息,以及它的坐标位置等信息。

前端时间有个项目用到OCR图片识别提取验证码、另外要提取图片中的姓名信息,使用PaddleOcr来实现,使用起来还是非常不错的。

我主要使用它有几种用途:

1、一些网站的验证码可以识别。之前用的版本,只能说中规中矩,成功率在80-95左右。

如果是轻量级的数字验证码,可以先尝试一下ddddocr,官网在:https://github.com/sml2h3/ddddocr

也是开源且免费的。普通 的数字验证码准确率还是比较高,能上90%以上。

收费的话,可以考虑百度、阿里云的专门的OCR验证码识别库,这些是有些成本的。Aws亚马逊和Google的也非常好用,只用过Aws的,准确率还是非常高。

2、识别图片内容,提取重要信息。
这个功能一些多模态的大模型 是可以直接实现的,但是呢,Token也不便宜,成本挺高。
如果用PaddleOCR识别成文字,再扔进本地的开源模型,就可以覆盖掉这块的成本。

3、手机自动化,可以辅助进行坐标定位
可以通过截屏,然后直接扔进Paddle识别出文字所在的位置,返回坐标直接点击,懒人专用。

PaddleOCR 3.0,今天发布的版本,有哪些特色

PaddleOCR 3.0新增三大特色能力:
1、全场景文字识别模型PP-OCRv5:单模型支持五种文字类型和复杂手写体识别;整体识别精度相比上一代提升13个百分点。
🌐 单模型支持五种文字类型(简体中文、繁体中文、中文拼音、英文和日文)。
✍️ 支持复杂手写体识别:复杂连笔、非规范字迹识别性能显著提升。
🎯 整体识别精度提升 – 多种应用场景达到 SOTA 精度, 相比上一版本PP-OCRv4,识别精度提升13个百分点!

2、通用文档解析方案PP-StructureV3:支持多场景、多版式 PDF 高精度解析,在公开评测集中领先众多开源和闭源方案。
🧮 支持多场景 PDF 高精度解析,在 OmniDocBench 基准测试中领先众多开源和闭源方案。
🧠 多项专精能力: 印章识别、图表转表格、嵌套公式/图片的表格识别、竖排文本解析及复杂表格结构分析等。

3、智能文档理解方案PP-ChatOCRv4:原生支持文心大模型4.5 Turbo,精度相比上一代提升15个百分点。
🔥 文档图像(PDF/PNG/JPG)关键信息提取精度相比上一代提升15个百分点!
💻 原生支持文心大模型4.5 Turbo,还兼容 PaddleNLP、Ollama、vLLM 等工具部署的大模型。
🤝 集成 PP-DocBee2,支持印刷文字、手写体文字、印章信息、表格、图表等常见的复杂文档信息抽取和理解的能力。

是骡子是马,得溜一下才知道。

Python环境安装

1、先需要安装官方的PaddlePaddle包。看官网安装说明
https://www.paddlepaddle.org.cn/install/quick

Paddle包早已经是3.0的版本,而OCR之前是2.1的版本,我们今天要升级到3.0再使用。

安装Paddle命令:
pip install -U paddlepaddle==3.0.0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/

再安装真正的OCR包,使用官方镜像,以便升级到最新的PaddleOCR3.0版本。
pip install paddleocr -U -i https://pypi.org/simple

这里-i指定使用Pypi官方源,如果使用的阿里云的源或者清华的源,可能包还没有同步,可以直接使用官方这个源安装下载。

2、旧版本的使用方法

paddleocr = PaddleOCR(use_angle_cls=True, lang='ch')  # 你可以换成 'ch' 或 'en'

image_file='captcha/captcha1_20250425_235439_726.png'
result = paddleocr.ocr(image_file, cls=True)

for line in result[0]:
    box, (text, confidence) = line
    print(f"文本: {text}, 置信度: {confidence}, 坐标: {box}")

输出结果:
文本: 8tnk8z, 置信度: 0.9906759262084961, 坐标: [[40.0, 19.0], [276.0, 17.0], [277.0, 80.0], [41.0, 82.0]]

因为图片比较简单,所以非常容易识别出来

百度PaddleOCR 3.0最新版本发布,本地体验

3、新版本使用推理方法调用文本识别模型。

img_file = 'captcha/captcha1_20250425_235439_726.png'

# 文本识别模型
model = TextRecognition(model_name="PP-OCRv5_server_rec")  # 文本识别模型
output = model.predict(input=img_file, batch_size=1)
for res in output:
    if not isinstance(res, TextRecResult):
        continue
    print(res.json)
    print(f'识别文本: {res.get("rec_text")}, 置信度: {res.get("rec_score")}')

识别结果还是比较准确。

4、再尝试之前的旧代码,发现已经不可用了。
这里发现,官方API已经变更了,之前的ocr已经废弃不可用,这个文本推理,也不会再输出坐标信息。

尝试新的方法来使用


# 文本识别模型
ocr = PaddleOCR(
    # lang="en",  # 指定中文ch还是英文en模型
    # ocr_version="PP-OCRv5",  # 指定模型版本
    # device='cpu',  # mps使用苹果芯片,cpu使用intel芯片,gpu使用nvidia芯片
    use_doc_orientation_classify=False,  # 不使用 方向分类
    use_doc_unwarping=False,  # 不使用 文本图像矫正模型,文本图像预处理
    use_textline_orientation=False,  # 不使用 文本行方向分类模型
    # text_detection_model_name='PP-OCRv5_server_det',
    # text_recognition_model_name='PP-OCRv5_server_rec',
)

# ocr = PaddleOCR() # 文本图像预处理+文本检测+方向分类+文本识别
# ocr = PaddleOCR(use_doc_orientation_classify=False, use_doc_unwarping=False) # 文本检测+方向分类+文本识别
# ocr = PaddleOCR(use_doc_orientation_classify=False, use_doc_unwarping=False, use_textline_orientation=False) # 文本检测+文本识别

# output = ocr.predict("截图/iShot_2025-05-21_09.46.10.png")
output = ocr.predict(img_file)
for res in output:
    if not isinstance(res, OCRResult):
        continue

    for idx, item in enumerate(res.get('rec_texts')):
        rec_boxes = res.get('rec_boxes')[idx]
        x_min, y_min, x_max, y_max = rec_boxes[0], rec_boxes[1], rec_boxes[2], rec_boxes[3]
        center_x, center_y = (x_min + x_max) / 2, (y_min + y_max) / 2

        data = {
            'text': res.get('rec_texts')[idx],  # 识别出的文本内容
            'score': res.get('rec_scores')[idx],  # 置信可靠度
            'boxes': res.get('rec_boxes')[idx],  # 文本框坐标
            'polys': res.get('rec_polys')[idx],  # 文本 矩形边界框数组
            'center': (center_x, center_y),  # 中心点坐标
        }

        print(f"识别文本:{data['text']},置信度:{data['score']},中心点坐标:{data['center']}")

发现验证码识别在这里不能用了,但是普通的文本识别是可以正常使用的。可能是哪里配置不对。于是打开官网的测试网址,看看是不是代码的问题。

官方在线测试:https://aistudio.baidu.com/community/app/91660/webUI

测试发现官方的页面也无法识别验证码,但是截图和PDf类是可以正常识别的。

换一张图片看看效果

百度PaddleOCR 3.0最新版本发布,本地体验

整体上中文的识别率还是非常高的。

官方还有非常多的示例,可以提取表格和版面解析,适用于不同的场景。可以按需取用。Demo也比较简单,几分钟就可以上手跑起来。

总结

百度的这个开源项目还是非常好用。在OCR里面算是头部工具了。

目前看和上一个版本之间的调用,差异比较大。

如果要识别验证码,使用TextRecognition的方法单独做文本识别。
如果要识别图片上的文字,可以使用PaddleOCR的predicate来实现。

官方的在线测试网站,可以试试,OCR的效果还是很好的:

移动端的OCR V5模型 只有16M大小,手机上也能随意使用。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇