热门标签 | 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;编程笔记


        推荐阅读
        • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
        • 开发笔记:加密&json&StringIO模块&BytesIO模块
          篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
        • 本文讲述了如何通过代码在Android中更改Recycler视图项的背景颜色。通过在onBindViewHolder方法中设置条件判断,可以实现根据条件改变背景颜色的效果。同时,还介绍了如何修改底部边框颜色以及提供了RecyclerView Fragment layout.xml和项目布局文件的示例代码。 ... [详细]
        • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
          本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
        • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
          本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
        • PHPMailer邮件类邮件发送功能的使用教学及注意事项
          本文介绍了使用国外开源码PHPMailer邮件类实现邮件发送功能的简单教学,同时提供了一些注意事项。文章涵盖了字符集设置、发送HTML格式邮件、群发邮件以及避免类的重定义等方面的内容。此外,还提供了一些与PHP相关的资源和服务,如传奇手游游戏源码下载、vscode字体调整、数据恢复、Ubuntu实验环境搭建、北京爬虫市场、进阶PHP和SEO人员需注意的内容。 ... [详细]
        • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
        • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
        • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
          本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
        • 树莓派语音控制的配置方法和步骤
          本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
        • SpringMVC接收请求参数的方式总结
          本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
        • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
          随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
        • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
        • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
        • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
        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社区 版权所有