如何使用Python和PaddleOCR轻松识别图片中的文字

在这个数字化时代,文本识别技术变得越来越重要,它广泛应用于文档自动化处理、内容审核、智能交互等场景。本文将引导你如何使用Python结合PaddleOCR库,轻松实现图片中的文字识别功能。

必备工具包安装

在开始编写代码之前,你需要安装以下几个Python库:

  • PyQt5:用于构建图形用户界面
  • PaddleOCR:百度开发的文字识别库,支持多语言和多场景的文字检测与识别
  • colorama:用于在终端输出彩色文本

你可以通过以下命令安装这些库:

pip install PyQt5 paddleocr colorama

确保你的环境中已经安装了这些包,否则程序将无法正常运行。

代码与逻辑简介

#!/usr/bin/env python3
# coding:utf-8
from PyQt5.QtCore import QObject
from paddleocr import PaddleOCR
import logging
from colorama import Fore, Style# 设置 PaddleOCR 日志级别为 ERROR
logging.getLogger("ppocr").setLevel(logging.ERROR)class OcrQt(QObject):def __init__(self, parent=None):super(OcrQt, self).__init__(parent)self.img_path = "./0001.png"self.use_angle = Trueself.cls = Trueself.default_lan = "ch"self.result = []self.ls = []self.dic = {}def set_task(self, img_path='', use_angle=True, cls=True, lan="ch"):self.img_path = img_pathself.use_angle = use_angleself.cls = clsself.default_lan = landef start(self):self.ocr(self.img_path, self.use_angle, self.cls, self.default_lan)self.grouping()def ocr(self, img_path, use_angle=True, cls=True, lan="ch", use_gpu=0):ocr = PaddleOCR(use_angle_cls=use_angle, use_gpu=use_gpu, lang=lan)try:result = ocr.ocr(img_path, cls=cls)self.result = resultexcept PermissionError:print(Fore.RED + '权限错误:' + Style.RESET_ALL)exit()except FileNotFoundError:print(Fore.RED + '图片路径错误:' + Style.RESET_ALL, self.img_path)exit()for line in self.result:ls = [j[0] for i in line for j in i]dic = {}self.ls = lsself.dic = dicfor index, info in enumerate(ls):if index % 2 == 0:dic[tuple(info)] = ls[index + 1]def grouping(self):print('\n'.join([info for index, info in enumerate(self.ls) if index % 2 == 1]))if __name__ == "__main__":path = r''  # 这里换成需要图区文本的图片链接即可,如不修改则使用默认图片ocrObj = OcrQt()if path:print('=' * 30, '提取用户上传图片文本', '=' * 30)ocrObj.set_task(path)else:print('=' * 30, '使用默认测试图片', '=' * 30)ocrObj.start()

该程序是一个基于PyQt5和PaddleOCR的图形界面应用,主要包括以下几个部分:

  1. 初始化OCR引擎:OcrQt类的构造函数中,通过PaddleOCR初始化OCR引擎,可以设置是否使用角度分类器、是否使用GPU加速、语言等参数。

  2. 设置识别任务:通过set_task方法设置图片路径、是否使用角度分类器、是否进行文字区域检测等。

  3. 启动识别:start方法中调用ocr方法对指定图片进行文字识别,并通过grouping方法对识别结果进行简单处理。

  4. 识别与结果处理:ocr方法中使用PaddleOCR对象进行OCR识别,grouping方法则负责输出识别结果。

如何使用

  1. 确保你已经安装了所有必要的库。
  2. 将上述代码保存为Python文件(例如ExtractText.py)。
  3. 修改path变量为你需要识别的图片路径。
  4. 运行程序,程序将输出图片中识别到的文字。

运行截图

Gitee仓库下载地址

为了方便大家的使用和修改,我已经将项目代码上传至Gitee,你可以通过以下链接进行访问和下载:

python实用脚本: 欢迎访问“Python实用脚本”仓库!本仓库汇集了各种实用的Python脚本,旨在帮助开发者提高开发效率,解决日常编程问题。脚本涵盖了数据处理、图像识别、自动化任务等多个领域,每个脚本都附有详细的使用说明和示例代码。无论你是初学者还是经验丰富的开发者,这里都能找到适合你的工具和解决方案。欢迎下载、试用并提出宝贵意见!icon-default.png?t=N7T8https://gitee.com/fantasy_5/python-practical-script

结语

通过本文,你已经学会了如何使用Python和PaddleOCR库来识别图片中的文字。这只是PaddleOCR强大功能的冰山一角,它还支持多种语言,可以适应不同的识别场景。希望本文能够帮助你在项目中快速实现文字识别功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/359417.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cephalo:专门用于仿生设计的多模态视觉大型语言模型

实时了解业内动态,论文是最好的桥梁,专栏精选论文重点解读热点论文,围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技(Mamba,xLSTM,KAN)…

什么是响应式编程

我们知道,当系统面对大流量、高并发的访问请求时,就可能会出现一系列性能问题,导致服务丧失了即时的响应性。如何时刻确保系统具有应对请求压力的能力,是架构设计的核心问题之一。 经典的服务隔离、限流、降级以及熔断等机制能够在…

2024全国各地高考录取分数线一览表(含一本、二本、专科)

2024年高考录取分数线陆续公布,上大学网(www.sdaxue.com)为大家整理全国31个省市高考录取分数线汇总,包括本科批、专科批和特殊类招生控制分数线汇总,来看看你的省份多少分能上大学吧。 一、2024年全国高考录取线一览表 1、宁夏 一本线&…

一文搞懂Linux命令行下载OneDrive分享文件

一文搞懂Linux命令行下载OneDrive分享文件 什么问题? 因为OneDrive有些坑,无法从分享界面获取真实下载链接,比如下面这个链接: https://connecthkuhk-my.sharepoint.com/:f:/g/personal/jhyang13_connect_hku_hk/EsEgHtGOWbJIm…

Golang逃逸分析

在Go语言中,逃逸分析(Escape Analysis)是一种编译器优化技术,用于确定变量是应该分配在堆上还是在栈上。这对程序的性能有显著的影响,因为栈上资源的分配速度和释放速度要比堆上快得多,同时堆上的内存管理也更加简单。 基本概念 …

C++并发之协程实例(四)(通过迭代器访问生成器序列)

目录 1 协程2 实例3 运行 1 协程 协程(Coroutines)是一个可以挂起执行以便稍后恢复的函数。协程是无堆栈的:它们通过返回到调用方来暂停执行,并且恢复执行所需的数据与堆栈分开存储。这允许异步执行的顺序代码(例如,在没有显式回调…

零代码搭建AI应用-文心智能体的设计与实现

本教程旨在帮助你开发一个结合语音识别和信息查询技术的智能应用,为用户提供登山小技巧和心得体会,满足用户在户外运动中的需求。通过设计不同角色和场景,可以满足用户在不同生活领域的需求,例如在家庭、社交、职场等场景下提供不…

什么洗地机值得推荐?洗地机选购攻略,热门洗地机推荐

在家庭清洁领域,洗地机已成为越来越多家庭的首选设备。它不仅能轻松应对各种材质的地面,还能有效去除顽固污渍,使家居环境更加整洁。然而,面对市场上众多洗地机品牌,许多消费者都会产生“什么洗地机值得推荐”的疑问。…

算法常见手写代码

1.NMS def py_cpu_nms(dets, thresh):"""Pure Python NMS baseline."""#x1、y1、x2、y2、以及score赋值x1 dets[:, 0]y1 dets[:, 1]x2 dets[:, 2]y2 dets[:, 3]scores dets[:, 4]#每一个检测框的面积areas (x2 - x1 1) * (y2 - y1 1)#按…

2024年数据、自动化与智能计算国际学术会议(ICDAIC 2024)

全称:2024年数据、自动化与智能计算国际学术会议(ICDAIC 2024) 会议网址:http://www.icdaic.com 会议地点: 厦门 投稿邮箱:icdaicsub-conf.com投稿标题:ArticleTEL。投稿时请在邮件正文备注:学生投稿&#…

Linux安装minio及mc客户端(包含ARM处理器架构)

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…

Ubuntu 18.04 安装低延时内核

下面记录在在Ubuntu 18.04系统下安装低延时内核的流程: Ubuntu 内核信息 ll /boot其中initrd.img为根文件系统,System.map为内核符号表(将内核代码段中的地址映射到对应的函数名或者全局变量名),vmlinuz为内核镜像。…

论文翻译 | Active Retrieval Augmented Generation 主动检索增强生成

Zhengbao Jiang1∗ Frank F. Xu1∗ Luyu Gao1∗ Zhiqing Sun1∗ Qian Liu2 Jane Dwivedi-Yu3 Yiming Yang1 Jamie Callan1 Graham Neubig1 卡内基梅隆大学语言技术研究所;海洋人工智能研究室;FAIR, Meta EMNLP 2023 main (Proceedings of t…

低成本创业新篇章:上门回收小程序的崛起与挑战

在当今这个快速变化的时代,低成本创业项目成为了许多创业者的首选。其中,上门回收小程序以其独特的商业模式和市场需求,成为了创业市场中的一股新势力。本文将深入探讨上门回收小程序作为低成本创业项目的崛起之路以及面临的挑战。 一、上门回…

【R语言】地理探测器模拟及分析(Geographical detector)

地理探测器模拟及分析 1. 写在前面2. R语言实现2.1 数据导入2.2 确定数据离散化的最优方法与最优分类2.3 分异及因子探测器(factor detector)2.4 生态探测器(ecological detector)2.5 交互因子探测器(interaction dete…

HTML(14)——结构伪类选择器和伪元素选择器

结构伪类选择器 作用&#xff1a; 根据元素的结构关系查找元素 选择器说明E:first-child查找第一个E元素E:last-child查找最后一个E元素E:nth-child(N)查找第N个E元素(第一个元素N值为1) 例如&#xff1a;查找第一个li标签&#xff0c;将背景改为绿色 <style> li:fir…

超越招聘技术人才目标的最佳技术招聘统计数据

研究发现&#xff0c;难以找到的人才比以往任何时候都更难找到&#xff1a;根据新人才委员会招聘调查报告&#xff1a;2024年难以找到的人才的战略和战略&#xff0c;60%的受访者表示&#xff0c;熟练人才的招聘时间比一年前长。调查进一步揭示了以下关于招聘技术的关键事实&am…

Git 常用命令,一文全搞懂

注意&#xff1a;每一次切换分支的时候&#xff0c;本地代码都会自动跟随改变&#xff0c;不需要重新pull,除非有人更新了代码 git remote add origin 地址 连接远程仓库 git clone 地址 克隆项目到本地 git init 更新本地隐藏文件初始化仓库 git add . 代…

Java--Data类

1.Data类 java.util.Date.表示指定的时间信息&#xff0c;不支持国际化 构造方法 new Date()&#xff1a;当前系统日期和时间 new Date(long)&#xff1a;给定日期和时间 主要方法&#xff1a; after(Date):判断当前日期对象是否在给定日期对象之后 before(Date):判断当前日期…

基础购物车(Javascript)

使用Javascript写一个基础购物车&#xff0c;其中包含商品数量加加减减&#xff0c;下面的总价和总数量跟着商品数量变动&#xff0c;还可以自己添加需要的商品。 基础购物车的结构样式如下&#xff1a; HTML代码&#xff1a; <body><table border"1px" c…