python编写ocr识别图片汉字

当你需要构建一个简单的图形用户界面(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 cv2class 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:returnimage_path = dialog.GetPath()dialog.Destroy()# Perform OCR on the selected imagetext = self.perform_ocr(image_path)# Display the recognized text in the text controlself.text_ctrl.SetValue(text)def perform_ocr(self, image_path):# Load the image using OpenCVimage = 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 pytesseracttext = pytesseract.image_to_string(gray)return textif __name__ == "__main__":app = wx.App()frame = MyFrame(None, "OCR with wxPython")frame.Show()app.MainLoop()

代码说明:

结果如下:

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

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

相关文章

matlab使用教程(10)—脚本和函数

1.概述 MATLAB 提供了一个强大的编程语言和交互式计算环境。您可以使用此语言在 MATLAB 命令行中一次输入一个命令,也可以向某个文件写入一系列命令,按照执行任何 MATLAB 函数的相同方式来执行这些命令。使用 MATLAB 编辑器或任何其他文件编辑器可以创建…

【源码分析】Nacos如何使用AP协议完成服务端之间的数据同步?

AP节点的同步使用的是异步任务消息队列的方式来实现的。 取出任务之后将会放入到一个List集合中。 然后会发现任务的执行是由条件的。 首先是当前集群的节点数量等于1000,那么此时会直接开始同步,当然这个条件在小项目中不会成立,所以还有…

无人车沿着指定线路自动驾驶与远程控制的实践应用

有了前面颜色识别跟踪的基础之后,我们就可以设定颜色路径,让无人车沿着指定线路做自动驾驶了,视频:PID控制无人车自动驾驶 有了前几章的知识铺垫,就比较简单了,也是属于颜色识别的一种应用,主要…

如何在业务中体现TCC事务模型?

在分布式系统设计中,随着微服务的流行,通常一个业务操作被拆分为多个子任务,比如电商系统的下单和支付操作,就涉及到了创建和更新订单、扣减账户余额、扣减库存、发送物流消息等,那么在复杂业务开发中,如何…

关于丢失安卓秘钥的撞sha-1值的办法

实验得知,安卓sha-1和keytool生成秘钥签名文件的时间有关。 前提条件是,开发者必须知道生成秘钥的所有细节参数 以下是撞文件代码(重复生成) import time import osidx 0while True:cmdkeytool -keyalg RSA -genkeypair -alia…

比特鹏哥-数据类型和变量【自用笔记】

这里写目录标题 1.数据类型介绍字符,整型,浮点型,布尔类型 2.signed 和unsigned3.数据类型的取值范围sizeof 展示字节大小--- 计算机中单位:字节 4.变量 常量4.1 变量创建变量(数据类型 变量名)创建变量的时…

【Spring Cloud 七】Sleuth+Zipkin 链路追踪

Sleuth链路追踪 系列博客背景一、 什么是链路追踪二、为什么要有链路追踪三、Sleuth与ZipkinSleuthZipkinSleuth和Zipkin的关系是什么? 四、使用Sleuthzipkin进行链路追踪4.1下载zipkin4.2案例说明项目代码服务提供者pom文件yml配置文件项目启动类controller 抽离出…

Tensorflow2-初识

TensorFlow2是一个深度学习框架,可以理解为一个工具,有谷歌的全力支持,具有易用、灵活、可扩展、性能优越、良好的社区资源等优点。 1、环境的搭建 1.1 Anaconda3的安装 https://www.anaconda.com/ Python全家桶,包括Python环境和…

jmeter使用步骤

jmeter 使用步骤 1,进入jmeter目录中的bin目录,双击jmeter.bat 打开 2,右键test plan 创建线程组 3,配置线程组参数 4,右键刚刚创建的线程组,创建请求,填写请求地址 5,需要携带to…

Spring Boot如何整合mybatisplus

文章目录 1. 相关配置和代码2. 整合原理2.1 spring boot自动配置2.2 MybatisPlusAutoConfiguration2.3 debug流程2.3.1 MapperScannerRegistrar2.3.2MapperScannerConfigurer2.3.3 创建MybatisPlusAutoConfiguration2.3.4 创建sqlSessionFactory2.3.5 创建SqlSessionTemplate2.…

科研热点|5本Scopus期刊不再被收录,Scopus期刊目录更新(附下载)!

此次Scopus期刊目录更新后,有5本期刊不再被收录(Discontinued titles July 2023),同上次更新时相比,此次又新增139本期刊(Accepted titles)进入Scopus数据库。目前Scopus 来源出版物列表(Scopus Sources&am…

全志F1C200S嵌入式驱动开发(soc系统集成)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 任何一个嵌入式设备都是由很多的子系统组成的。这里面有硬件、有软件,还可能有机械,并不一定就是大家看到的消费电子那样,即一个soc构成了所有的系统。现实情况是,要构建一个系…

使用Python将图像转换为PDF:一次性解决您的批量转换需求

导语: 在数字化时代,我们经常需要处理大量的图像文件。将这些图像转换为PDF格式可以方便地存档、分享和打印。本文将介绍如何使用Python编程语言将图像批量转换为PDF,并提供了一个简单易用的图形界面来跟踪转换进度。 准备工作 在开始之前…

一个Linux驱动工程师必知的内核编译机制

Linux内核的编译主要过程:配置、编译、安装。 配置主要由Kconfig提供图形界面完成编译主要基于Kbuild编译系统,执行make完成编译安装主要也是基于Kbuild提供的脚本,然后执行make完成安装 Kconfig Kconfig用于内核的配置,make m…

Kafka入门,保姆级教学

文章目录 Kafka概念消息中间件对比消息中间件对比-选择建议Kafka常用名词介绍Kafka入门1. Kafka安装配置2.Kafka生产者与消费者关系3.Kafka依赖4.生产者发消息5.消费者接受消息6.Kafka高可用性设计6.1集群Kafka备份机制(Reolication) 7.kafka生产者详解7.1 发送类型7.2参数详解…

任务12、Quality指令加持,Midjourney生成电影级数码作品

12.1 任务概述 本次实验任务旨在帮助你掌握Midjourney AI绘画中的Quality指令。通过深入介绍Quality指令的概念和作用,我们将解释为什么它在绘画中至关重要。通过测试不同的Quality参数对绘画效果的影响,并提供实战演示,你将学会如何在Midjourney中设置Quality参数以达到更…

背包问题一维写法(状态压缩)实战,其二(目标和、零一和)

给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 和 -。对于数组中的任意一个整数,你都可以从 或 -中选择一个符号添加在前面。 返回可以使最终数组和为目标数 S 的所有添加符号的方法数。 示例: 输…

node上传文件 + vue3 + elementPlus 组件封装

一、node 1.在node环境中安装multer(node.js中间件)包,用于处理 multipart/form-data 类型的表单数据 npm install --save multer 2.userRouter var express require(express); const multer require(multer) const upload multer({ dest: public/avataruplo…

“实现数字化转型:探索会议OA项目的高级技术与创新应用“

文章目录 引言:1.项目背景和需求分析:2.技术选型和架构设计:3.项目实现和功能亮点:3.0 layui实现登录及注册3.1 会议管理模块3.1.1 会议发布3.1.2 我的会议3.1.3 我的审批3.1.4 会议通知3.1.5 待开会议3.1.6 历史会议3.1.7 所有会…

学生管理系统(升级版)

import java.util.ArrayList; import java.util.Random; import java.util.Scanner;public class Demo_学生管理系统 {public static void main(String[] args) {ArrayList<User> list new ArrayList<>();Scanner sc new Scanner(System.in);while (true) {Syste…