热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python教程分享Python图片文字识别的实现之PaddleOCR

目录项目使用项目结构环境部署1、安装anaconda,构造虚拟环境2、依赖包下载测试代码参数补充总结前言什么是ocr?光学字符识别(opticalcharacterrec
目录
  • 项目使用
    • 项目结构
    • 环境部署
      • 1、安装anaconda,构造虚拟环境
      • 2、依赖包下载
    • 测试代码
      • 参数补充
      • 总结

        前言

        什么是ocr?

        光学字符识别(optical character recognition, ocr),是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。简而言之,检测图像中的文本资料,并且识别出文本的内容。

        那么有哪些应用场景呢?

        其实我们日常生活中处处都有ocr的影子,比如在疫情期间身份证识别录入信息、车辆车牌号识别、自动驾驶等。我们的生活中,机器学习已经越来越多的扮演着重要角色,也不再是神秘的东西。

        ocr的技术路线是什么呢?

        ocr的运行方式如下图,输入->图像预处理->文字检测->文本识别->输出。

        Python 图片文字识别的实现之PaddleOCR

        python教程分享Python 图片文字识别的实现之PaddleOCR主要是介绍一个博主使用的比较好的ocr开源项目,在这里分享给大家——paddleocr。

        项目github地址: paddleocr地址

        我会按照刚接触的状态,梳理一下验证使用该项目的过程。

        项目使用

        先把项目从github上clone下来,慢慢分析。

        项目结构

        首先我们看一下项目的构造。

        Python 图片文字识别的实现之PaddleOCR

        发现项目有中文的介绍说明,这就很方便了,点开按照官方的说明开始操作。

        环境部署

        点开readme.md,,可以从文档教程中看到第一步就是教你如何安装环境。

        Python 图片文字识别的实现之PaddleOCR

        由于内容过多,我就做个概括,方便大家直接上手。

        1、安装anaconda,构造虚拟环境

        这里可以参考我的另一篇文章,里面很详细:python 机器学习第一章环境配置图解流程

        官方给的是python3.8的虚拟环境,我们也构造一个,打开anaconda prompt。

        Python 图片文字识别的实现之PaddleOCR

        输入命令:

          conda create -n paddle_env python=3.8

        激活环境:

          conda activate paddle_env

        2、依赖包下载

        paddlepaddle安装

          pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

        layoutparser安装

          pip3 install -u https://paddleocr.bj.bcebos.com/whl/layoutparser-0.0.0-py3-none-any.whl

        shapely安装,这个需要下载,下载地址:shapely下载地址

        我选的是这个

        Python 图片文字识别的实现之PaddleOCR

        安装命令:

          pip install shapely-1.8.0-cp38-cp38-win_amd64.whl

        paddleocr安装

          pip install paddleocr -i https://mirror.baidu.com/pypi/simple

        好的,环境有点多,都安装好了就开始上手使用吧。

        测试代码

        官方给出了两种模式,一是命令行执行,一是代码执行。为了直观的看到配置,我这里使用的是代码模式。

        准备一张带文字的图片

        Python 图片文字识别的实现之PaddleOCR

        测试代码如下

          #!/user/bin/env python  # coding=utf-8  """  @project : ocr_paddle  @author  : huyi  @file   : test.py  @ide    : pycharm  @time   : 2021-11-15 14:56:20  """  from paddleocr import paddleocr, draw_ocr     # paddleocr目前支持的多语言语种可以通过修改lang参数进行切换  # 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`  ocr = paddleocr(use_angle_cls=true, use_gpu=false,                  lang="ch")  # need to run only once to download and load model into memory  img_path = './data/2.jpg'  result = ocr.ocr(img_path, cls=true)  for line in result:      # print(line[-1][0], line[-1][1])      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, font_path='./fonts/simfang.ttf')  im_show = image.fromarray(im_show)  im_show.save('result.jpg')

        代码说明

        1、因为我的电脑没有显卡,所以设置了use_gpu=false。

        2、显示结果部分会将识别的文字用框标出来,并且展示识别的结果。

        验证一下

        Python 图片文字识别的实现之PaddleOCR

        我们看到,打印的内容有识别出来的每句话所在的图片位置,以及识别结果和可信度。而上面的结果图中,将每句话对应的文字都框了出来。效果很不错!

        参数补充

        官方还给出了一些参数,可以调整输出的内容。可以参看quickstart.md文件。参数补充:

        – 单独使用检测:设置`–rec`为`false`
        – 单独使用识别:设置`–det`为`false`

        官方还提供一个标准的json结构输出数据

        pp-structure的返回结果为一个dict组成的list,示例如下

        “`shell
        [{ ‘type’: ‘text’,
        ‘bbox’: [34, 432, 345, 462],
        ‘res’: ([[36.0, 437.0, 341.0, 437.0, 341.0, 446.0, 36.0, 447.0], [41.0, 454.0, 125.0, 453.0, 125.0, 459.0, 41.0, 460.0]],
        [(‘tigure-6. the performance of cnn and ipt models using difforen’, 0.90060663), (‘tent ‘, 0.465441)])
        }
        ]
        “`

        总结

        总的来说,这个项目还是很有意思的,训练的部分我就不多赘述了,毕竟准备数据挺麻烦的。回头我再想想这个项目可不可以魔改成好用的工具。

        分享:

        我们根本不需要最后的落脚点,只要不断前进就好了,只要不停下,道路就会不断延伸。——《进击的巨人》

        如果python教程分享Python 图片文字识别的实现之PaddleOCR对你有帮助的话,请不要吝啬你的赞,谢谢!

        Python 图片文字识别的实现之PaddleOCR

        到此这篇关于python 图片文字识别的实现之paddleocr的文章就介绍到这了,更多相关python 文字识别内容请搜索<编程笔记>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<编程笔记>!

        需要了解更多python教程分享Python 图片文字识别的实现之PaddleOCR,都可以关注python教程分享栏目&#8212;编程笔记


        推荐阅读
        • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
        • 三角测量计算三维坐标的代码_双目三维重建——层次化重建思考
          双目三维重建——层次化重建思考FesianXu2020.7.22atANTFINANCIALintern前言本文是笔者阅读[1]第10章内容的笔记,本文从宏观的角度阐 ... [详细]
        • 提升 Kubernetes 集群管理效率的七大专业工具
          Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
        • 解决Only fullscreen opaque activities can request orientation错误的方法
          本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
        • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
          本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
        • javascript分页类支持页码格式
          前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
        • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
          本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
        • 非计算机专业的朋友如何拿下多个Offer
          大家好,我是归辰。秋招结束后,我已顺利入职,并应公子龙的邀请,分享一些秋招面试的心得体会,希望能帮助到学弟学妹们,让他们在未来的面试中更加顺利。 ... [详细]
        • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
          本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
        • Flutter 开发中集成极光推送的详细步骤
          本文详细介绍了如何在 Flutter 项目中集成极光推送服务,包括配置和测试的具体步骤。 ... [详细]
        • 单片微机原理P3:80C51外部拓展系统
            外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
        • 从0到1搭建大数据平台
          从0到1搭建大数据平台 ... [详细]
        • 利用REM实现移动端布局的高效适配技巧
          在移动设备上实现高效布局适配时,使用rem单位已成为一种流行且有效的技术。本文将分享过去一年中使用rem进行布局适配的经验和心得。rem作为一种相对单位,能够根据根元素的字体大小动态调整,从而确保不同屏幕尺寸下的布局一致性。通过合理设置根元素的字体大小,开发者可以轻松实现响应式设计,提高用户体验。此外,文章还将探讨一些常见的问题和解决方案,帮助开发者更好地掌握这一技术。 ... [详细]
        • 在探讨 MySQL 正则表达式 REGEXP 的功能与应用之前,我们先通过一个小实验来对比 REGEXP 和 LIKE 的性能。通过具体的代码示例,我们将评估这两种查询方式的效率,以确定 REGEXP 是否值得深入研究。实验结果将为后续的详细解析提供基础。 ... [详细]
        • 如何使用mysql_nd:Python连接MySQL数据库的优雅指南
          无论是进行机器学习、Web开发还是爬虫项目,数据库操作都是必不可少的一环。本文将详细介绍如何使用Python通过 `mysql_nd` 库与 MySQL 数据库进行高效连接和数据交互。内容涵盖以下几个方面: ... [详细]
        author-avatar
        俊廷淑芳淑幸
        这个家伙很懒,什么也没留下!
        PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
        Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有