python编写ocr识别图片汉字

news2024/11/24 11:58:51

当你需要构建一个简单的图形用户界面(GUI)应用程序,并在其中实现光学字符识别(OCR)功能时,wxPython是一个强大而灵活的选择。wxPython是一个基于Python的跨平台GUI开发框架,结合了wxWidgets C++库和Python语言的优势。结合pytesseract和OpenCV等库,你可以轻松地创建一个具有OCR功能的应用程序。

在这篇博客中,我们将介绍一个使用wxPython构建的简单OCR应用程序示例。我们将使用wxPython创建一个框架,并在其中添加一个选择图像的按钮和一个用于显示识别文本的文本控件。当用户选择图像后,我们将使用pytesseract和OpenCV对图像进行处理和OCR,并将识别到的文本显示在应用程序中。

下载tesseract安装盘:

https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-5.3.1.20230401.exe

安装tesseract程序。

设置环境变量。

下载字库:

blob:https://github.com/cd52fa55-b81f-444c-8c3d-1075aabb15a9

安装pytesseract模块:

pip install pytesseract

测试:

tesseract C:\myimages\1.png result -l chi_sim

源代码:

import wx
import pytesseract
import cv2


class MyFrame(wx.Frame):
    def __init__(self, parent, title):
        super(MyFrame, self).__init__(parent, title=title, size=(400, 300))

        panel = wx.Panel(self)
        self.text_ctrl = wx.TextCtrl(panel, style=wx.TE_MULTILINE)
        self.button = wx.Button(panel, label="Select Image")
        self.button.Bind(wx.EVT_BUTTON, self.on_select_image)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.text_ctrl, proportion=1, flag=wx.EXPAND | wx.ALL, border=10)
        sizer.Add(self.button, flag=wx.ALIGN_CENTER | wx.ALL, border=10)
        panel.SetSizer(sizer)

    def on_select_image(self, event):
        wildcard = "JPEG files (*.jpg)|*.jpg|PNG files (*.png)|*.png"
        dialog = wx.FileDialog(self, "Select Image", wildcard=wildcard, style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)

        if dialog.ShowModal() == wx.ID_CANCEL:
            return

        image_path = dialog.GetPath()
        dialog.Destroy()

        # Perform OCR on the selected image
        text = self.perform_ocr(image_path)

        # Display the recognized text in the text control
        self.text_ctrl.SetValue(text)

    def perform_ocr(self, image_path):
        # Load the image using OpenCV
        image = cv2.imread(image_path)

        # Preprocess the image (you may need to modify this based on your requirements)
        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        gray = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]

        # Perform OCR using pytesseract
        text = pytesseract.image_to_string(gray)

        return text


if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame(None, "OCR with wxPython")
    frame.Show()
    app.MainLoop()

代码说明:

结果如下:

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

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

相关文章

Spring MVC项目概述及创建

Spring MVC项目概述及创建 1.什么是Spring MVC Spring MVC是基于SevletAPI的原始Web框架。Spring MVC项目也叫做SpringWeb项目。 它是在springboot项目中引入了web框架,原本的spring项目不具备网络通信能力,而spring mvc允许http响应,当用…

芯片热处理设备 HTR-4立式4寸快速退火炉

HTR-4立式4寸快速退火炉 HTR-4立式4寸快速退火炉(芯片热处理设备)广泛应用在IC晶圆、LED晶圆、MEMS、化合物半导体和功率器件等多种芯片产品的生产,和欧姆接触快速合金、离子注入退火、氧化物生长、消除应力和致密化等工艺当中,通…

调整vscode

调整vscode 连wifi linux连接wifi

noisy_crt 题目复现

文章目录 题一([NeepuCtf 2023]loud)题目描述:题目分析: 题二([NeepuCtf 2023]loud2)题目描述:题目分析: 浅记一下 论文在此 不过吧,内容太多了,我也不想看 题一([NeepuCtf 2023]loud) 题目描述&#xff…

C语言调试实用技巧之 2

导言: 今天也给大家介绍一些调试技巧 1.如何写出好(易于调试)的代码 1.1标准: 1.2推荐技巧 1.2.1assert()//断言 用assert代替if语句 提示:assert是宏,不是函数 需要包含的头文…

配置Picgo图床之COS、OSS、Github图床

简介 PicGo是一款开源的图片上传和管理工具,它提供了简单易用的界面和丰富的功能,方便用户上传、管理和分享图片。 以下是PicGo的一些主要特点和功能: 图片上传:PicGo支持将本地图片快速上传到云存储服务,如七牛云、…

NamedParameterJdbcTemplate.queryForList 方法的使用说明

objectMapper.configure 方法是 Jackson 提供的一个用于配置 ObjectMapper 对象的方法。ObjectMapper 是 Jackson 库的核心类,用于将 Java 对象与 JSON 数据相互转换。 configure 方法的作用是设置 ObjectMapper 的配置选项,例如设置日期格式、设置序列…

博客优化差不多了

博客地址:https://blog.zysicyj.top/ 这篇文章不是教学博客,后续考虑看是否出教学 具体优化视频可以观看B站视频 https://space.bilibili.com/258577429 这个博客是HexoGithub Pages搭建的,如何搭建可以看我之前的文章,主题是…

普及100Hz高刷+1ms响应 微星发布27寸显示器:仅售799元

不论办公还是游戏,高刷及低响应时间都很重要,微星现在推出了一款27寸显示器PRO MP273A, 售价只有799元,但支持100Hz高刷、1ms响应时间,还有FreeSync技术减少撕裂。 PRO MP273A的100Hz高刷新率是其最大的卖点之一&#…

如何为网站进行全面的整站翻译?

要翻译整个网站,可以按照以下步骤进行: 确定翻译需求:确定你需要将整个网站翻译成哪种语言。这可以根据你的目标受众和市场进行决定。 寻找翻译资源:你可以选择以下几种方式来进行网站翻译: a. 人工翻译:雇…

Go微服务实践 - Rpc核心概念理解

概述 从0研究一下Golang已经Golang的微服务生态体系,Golang的微服务首先要从Rpc开始,在升级到Grpc,详细介绍这些技术点都在解决什么技术问题。 Rpc Rpc (Remote Procedure Call) 远程过程调用,简单的理解是一个节点请求另一个节…

解决:树莓派VNC连接屏幕显示不全

目录 前导:我在重新烧录玩树莓派系统,开启完VNC并连接后,发现我的树莓派远程桌面屏幕显示不全,看着很难受! PS:开启VNC服务的过程 问题如下现象: 问题分析:当树莓派通过VNC连接时&…

STDF - 基于 Svelte 和 Tailwind CSS 打造的移动 web UI 组件库,Svelte 生态里不可多得的优秀项目

Svelte 是一个新兴的前端框架,组件库不多,今天介绍一款 Svelte 移动端的组件库。 关于 STDF STDF 是一个移动端的 UI 组件库,主要用来开发移动端 web 应用。和我之前介绍的很多 Vue 组件库不一样,STDF 是基于近来新晋 js 框架 S…

ZABBIX 6.4的完全安装步骤

此安装文档是我一步一步的验证过的,按步骤来可以顺畅的安成ZABBIX6.4的部署。 Zabbix 主要有以下几个组件组成: Zabbix Server6.4:Zabbix 服务端,是 Zabbix 的核心组件。它负责接收监控数据并触发告警,还负责将监控数…

SNAT与DNAT原理

SNAT和DNAT (源地址转换和目标地址转换) SNAT:源地址转换。内网到外网转换的是源地址。 DNAT:目标地址转换:外网到内网转换的是目的地址 (把内部服务器的ip地址转换成一个所有人都可以访问的地址&#xff0…

【Python】Pandas 简介,数据结构 Series、DataFrame 介绍,CSV 文件处理,JSON 文件处理

序号内容1【Python】Pandas 简介,数据结构 Series、DataFrame 介绍,CSV 文件处理,JSON 文件处理2【Python】Pandas 数据清洗操作,常用函数总结 文章目录 1. Pandas 简介2. Pandas 数据结构1. Series(一维数据&#xff…

JavaWeb(9)——前端综合案例3(悬停显示下拉列表)

一、实例需求 ⌛ 实现类似百度首页的“一个简单的鼠标悬停显示的下拉列表效果”。 二、代码实现 ☕ <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>.dropdown-cont…

Linux系统---进程控制

文章目录 进程创建进程终止进程等待进程替换实现简单的mini-shell 一、进程创建 1.fork()函数 在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。 #include <unistd.h> pid_t fork(void…

关于接口测试用例设计的一些思考

接口测试发现的典型问题 传入参数处理不当&#xff0c;引起程序错误类型溢出&#xff0c;导致数据读取和写入不一致对象权限校验出错&#xff0c;可获取其他角色信息状态出错&#xff0c;导致逻辑处理出现问题逻辑校验不完善定时任务执行出错 接口测试用例设计 接口测试用例…

Spring Boot统一处理功能——拦截器

1.用户登录权限校验 ⽤户登录权限的发展从之前每个⽅法中⾃⼰验证⽤户登录权限&#xff0c;到现在统⼀的⽤户登录验证处理&#xff0c;它是⼀个逐渐完善和逐渐优化的过程。 1.1最初用户登录 我们先来回顾⼀下最初⽤户登录验证的实现⽅法&#xff1a; RestController RequestMap…