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

news2024/11/16 9:18:21

在这个数字化时代,文本识别技术变得越来越重要,它广泛应用于文档自动化处理、内容审核、智能交互等场景。本文将引导你如何使用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 = True
        self.cls = True
        self.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_path
        self.use_angle = use_angle
        self.cls = cls
        self.default_lan = lan

    def 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 = result
        except 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 = ls
            self.dic = dic
            for 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.coloradmin.cn/o/1857787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Django教程(001):安装及快速上手

1.1 Django安装 pip install django安装之后 c:\python39-python.exe-Scripts-pip.exe-django-admin.exe【安装django之后,工具,创建django项目】-Lib-内置模块-site-packages-flask-django(安装django之后,【django框架源码】)如下图&…

仓库专用高压弓静音版驱鸟器详解

仓库不仅仅储存着各式各样的物品,还可能成为野生鸟类的栖息地。鸟类可能会在仓库内寻找食物,例如小型虫子和昆虫,或残留的食物。它们的觅食行为不仅可能污染货物,还可能对仓库的设施和结构造成损害。 采取有效的驱鸟措施&#xff…

有什么能和ai聊天的软件?5个软件教你快速和ai进行聊天

有什么能和ai聊天的软件?5个软件教你快速和ai进行聊天 当今数字化时代,人工智能(AI)技术已经逐渐渗透到我们的日常生活中,而与AI进行聊天也成为了一种趋势和乐趣。以下是五款可以和AI进行聊天的软件,它们提…

ai智能写作一键生成的软件盘点,4款宝藏!

在信息爆炸的时代,内容创作已成为各行各业的刚需。然而,对于许多创作者来说,如何高效、高质量地输出内容却是一个不小的挑战。幸运的是,随着人工智能技术的飞速发展,AI智能写作软件应运而生,它们凭借一键生…

酒壮怂人胆 男子酒后疯狂踹门被拘

(通讯员:高园)俗话说,小酒怡情,酗酒伤身。许多人在下班后都喜欢“喝两杯”,可一旦醉意上头,可就各有各表现了。有的人困意袭来,呼呼大睡;有的人失去理智,疯狂…

oracle报错-ORA-12638:身份证明检索失败

navicat16连接本地oracle数据库成功后,连接远程数据库,同样是oracle11g,确认网络、用户名、密码都没问题的情况下,报错ora-12638。 解决方法: 这是由于Oracle的认证方式使用了本地操作系统认证(NTS&#x…

图像处理Python库--图片裁剪、缩放、灰度图、圆角等

图像处理Python库 py-img-processor1. 安装2. 使用(Usage)2.1 运行配置2.2 图像处理处理函数图像处理参数为字符串图像处理参数为JSON 命令行提取图像主色调 py-img-processor Image editor using Python and Pillow. 依赖Pillow开发的Python库,用于图像编辑处理。…

【从零开始认识AI】梯度下降法

目录 1. 原理介绍 2. 代码实现 1. 原理介绍 梯度下降法(Gradient Descent)是一种用于优化函数的迭代算法,广泛应用于机器学习和深度学习中,用来最小化一个目标函数。该目标函数通常代表模型误差或损失。 基本思想是从一个初始…

多路h265监控录放开发-(14)

首先创建一个新类XCalendar继承QCalendarWidget类&#xff0c;然后在UI视图设计器中把日历提升为XCalendar&#xff0c;通过这个函数自己设置日历的样式 xcalendar.h #pragma once #include <QCalendarWidget> class XCalendar :public QCalendarWidget { public:XCal…

「动态规划」如何求最长摆动子序列的长度?

376. 摆动序列https://leetcode.cn/problems/wiggle-subsequence/description/ 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为摆动序列。第一个差&#xff08;如果存在的话&#xff09;可能是正数或负数。仅有一个元素或者含两个不等元素的序列也…

【鸿蒙】ArkTS语言

HarmonyOS 应⽤的主要开发语⾔是 ArkTS&#xff0c;它由 TypeScript&#xff08;简称TS&#xff09;扩展⽽来&#xff0c;在继承 TypeScript语法的基础上进⾏了⼀系列优化&#xff0c;使开发者能够以更简洁、更⾃然的⽅式开发应⽤。 值得注意的是&#xff0c;TypeScript 本身也…

练习实践:ubuntu18.04安装、配置Nginx+PHP环境,两种配置方式,多站点

参考来源&#xff1a; https://help.aliyun.com/document_detail/464753.html https://www.cnblogs.com/laosan007/p/12803287.html https://blog.csdn.net/qq_55364077/article/details/132207083 【安装同版本7.2的php】 需要知道对应php和nginx的安装版本 需要安装php-fpm…

持续增强国产适配 | 宁盾身份域管与南大通用、飞腾完成产品兼容性认证

随着党政、央国企、金融信创国产化改造日益深入&#xff0c;企业对国产 IT 基础设施生态兼容适配的需求日益迫切。为践行给企业提供“开箱即用”的交付体验承诺&#xff0c;宁盾身份域管持续增强多元异构产品的兼容适配。近日&#xff0c;宁盾身份域管与天津南大通用数据技术股…

基于Java协同过滤算法的图书推荐系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…

我的大学生活-人面桃花相映红(大二篇)

我的大学生活&#xff08;大二篇&#xff09; 前言推荐大二&#xff08;人面桃花相映红&#xff09;2021年9月2021年10月2021年11月2021年12月2022年1月 寒假2022年2月学习Java框架 大二&#xff08;人面桃花相映红&#xff09;2022年3月2022年4月2022年5月2022年6月 暑假2022年…

【启明智显分享】HMI方案核心板选型攻略

随着全球智能制造的浪潮汹涌而来&#xff0c;人机界面&#xff08;HMI&#xff09;作为连接人与机器的关键桥梁&#xff0c;在自动化领域中正扮演着日益重要的角色。HMI不仅为操作者提供了直观、便捷的交互方式&#xff0c;还通过集成多种功能&#xff0c;实现了机器运行的高效…

Pycharm主题切换(禁用)导致UI界面显示异常解决

安装其他主题 Material Theme UI One Dark theme One Dark theme安装 (Material Theme UI主题同理) Pycharm 打开 Settings > Plugins&#xff0c;搜索One Dark theme 安装即可 One Dark theme 效果显示 问题记录 UI显示异常 安装多个主题时&#xff0c;当禁用某些主题&…

Linux--V4L2应用程序开发(一)数据采集及问题

一、V4L2介绍 Video for Linux two(Video4Linux2)简称V4L2&#xff0c;是V4L的改进版。&#xff08;Video4Linux2&#xff09;是 Linux 内核中用于捕获视频数据的框架和 API。 它提供了一套标准化的接口&#xff0c;方便开发者与各种视频硬件设备进行交互&#xff0c;并支持丰…

C语言入门课程学习笔记10:结构体联合体位域

C语言入门课程学习笔记10 第48课 - 自定义数据类型&#xff08;上&#xff09;实验-typedef实验小结 第49课 - 自定义数据类型&#xff08;中&#xff09;实验实验小结 第50课 - 自定义数据类型&#xff08;下&#xff09;实验实验小结 第51课 - 多文件程序设计实验实验实验小结…

.net core接入nacos注册服务并使用配置中心

1、安装依赖 Nuget包&#xff1a;nacos-sdk-csharp.Extensions.Configuration和nacos-sdk-csharp.AspNetCore 2、在appsettings.json中配置 "nacos": {"ServerAddresses": ["http://localhost:8848/"],"DefaultTimeOut": 15000,"…