用python写一个简单的文字识别器GUI

article/2025/9/21 3:58:48

效果图

使用方法

提取文本的步骤:

先选择普通识图还是高精度识图, 默认是普通识图

然后

方法1: 点击选择图片,然后选中图片就会自动识别图片并提取文字(gif格式的不可以提取文字)
方法2: 手动粘贴路径到最上面的单行输入框,再点击开始识别
方法3: 先用其他截图软件(比如QQ截图),截图之后会自动存到剪切板中, 然后点击从粘贴板中导入图片并自动识图
可以在右侧栏预览图片, 识别文字结果在下方文本框展示出来,点击全部复制自动存入到剪切板中,如果嫌弃结果不准确请切换到高精度识图再试一次

安装百度aip模块

方法一:在pycharm中点击左下角的 在这里插入图片描述
Terminal 然后输入命令 pip install baidu-aip
在这里插入图片描述
看到 Successfuly 字样即表示安装成功,安装成功后导包行就不会报错
在这里插入图片描述
方法二:进入pycharm的安装环境输入打开cmd命令窗口输入命令
pip install baidu-aip

在这里插入图片描述
因为我已经安装过了,所以提示
您使用的是pip版本9.0.1,但是也有版本20.3.3可用。
你应该考虑通过’python -m pip install——upgrade pip’命令进行升级

同理安装成功后导包行不会报错

源码

import os
import tkinter as tk
import tkinter.messagebox
import tkinter.filedialogfrom  PIL import Image,ImageTk
from aip import AipOcrfrom PIL import Image,ImageGrab# 选择图片函数
def chooseImg():fileName = tk.filedialog.askopenfilename(title='选择图片',filetype=[('图片文件','*.jpg'),('图片文件','*.png'),('图片文件','*.bmp'),('不支持的图片文件','*.gif'),('所有类型文件','*.*')])if fileName:varFileName.set(fileName)# 预览图片showImg(fileName)# 百度图片识别文字baiduOCR(fileName)# 预览图片函数
def showImg(fileName):# 动态给label设置图片,支持所有格式图片img_open = Image.open(fileName)imgTk = ImageTk.PhotoImage(img_open)labelImg.config(image=imgTk)labelImg.image = imgTk# 百度图片识别文字
def baiduOCR(picfile):# 初始化APP_ID = '16434848'  # 刚才获取的 ID,下同API_KEY = 'QGwg4nFU25HVgRW6hjAF3zNg'SECRECT_KEY = 'lFrvrLqxq7p0ZhEOFyMbZHgA0IGuGTo8'client = AipOcr(APP_ID, API_KEY, SECRECT_KEY)i = open(picfile, 'rb')img = i.read()print("正在识别图片:\t" + picfile)if varHighAccurate.get(): # True 高精度识图print("高精度识图中....")message = client.basicAccurate(img)   # 通用文字高精度识别else: # False 普通识图print("普通识图中...")message = client.basicGeneral(img)  # 通用文字识别print("识别成功! 文字是:")print(message)i.close();if message.get('error_code'):  # 出错了tk.messagebox.showerror(title='图片提取文字出错了',message='暂不支持gif格式图片,可能网络中断')else:showMsg(message) # 识别出来了,就显示结果信息# 显示结果信息
def showMsg(message):string=''for txt in message.get('words_result'):string += txt.get('words')+'\n'print(string)txtResult.delete(0.0,tk.END) #清空内容 0.0是lineNumber.colNumber的表示方法txtResult.insert(tk.INSERT,string) #添加文字# 一键复制结果信息
def Copy():txtResult.clipboard_clear()string = txtResult.get(0.0,tk.END)txtResult.clipboard_append(string)print("复制的字符是:"+string)# 粘贴路径之后再识别
def start():path = entryFileName.get()path = path.strip(' ').strip('"') # 去掉字符串开头结尾的空格和双引号if len(path)<=0:returnprint(path)showImg(path)baiduOCR(path)# 从粘贴板获取图片,并且识图
def clipboard():# 从粘贴板获取img_open = ImageGrab.grabclipboard()if isinstance(img_open,Image.Image): #如果是图片print("剪切板中有图片")imgTk = ImageTk.PhotoImage(img_open)  # 需要导入PIL中的ImageTk# 预览图片labelImg.config(image=imgTk)labelImg.image = imgTk# 保存图片tempFileName = 'D:/删除.jpg'img_open.save(tempFileName)# 百度识图baiduOCR(tempFileName)# 再删除缓存的图片if (os.path.exists(tempFileName)):os.remove(tempFileName)else:tk.messagebox.showinfo('粘贴板中没有图像信息','请先用QQ截图后,再来使用')# 窗口
app = tk.Tk()
app.title("图片提取文字,不支持gif格式图片")
app.geometry('1000x500')# 图片路径
varFileName = tk.StringVar()
varFileName.set('')
# 结果信息
varTxtMsg = tk.StringVar()
varTxtMsg.set('')
# 百度高精度识图,默认false
varHighAccurate = tk.BooleanVar()
varHighAccurate.set(False)# 图片路径输入框
entryFileName = tk.Entry(app,width=35, textvariable=varFileName)
entryFileName.place(x=90,y=10)# 选择图片并且识别按钮
btn_chooseImg = tk.Button(app,text='选择图片',command=chooseImg)
btn_chooseImg.place(x=10,y=5)# 开始识别按钮
btn_start = tk.Button(app,text='开始识别',command=start)
btn_start.place(x=400,y=5)# 从粘贴板导入图片并且识别
btn_clipboard = tk.Button(app,text='从粘贴板导入图片并且识别',command=clipboard)
btn_clipboard.place(x=15,y=55)# 预览图片的标签
labelImg = tk.Label(app)
labelImg.place(x=500,y=5)# 是否高精度识图
tk.Radiobutton(app,text="普通识图",variable=varHighAccurate,value=False).place(x=30,y=110)
tk.Radiobutton(app,text="高精度识图",variable=varHighAccurate,value=True).place(x=240,y=110)# 显示结果的文本框
txtResult = tk.Text(app,width=50, height=15)
txtResult.place(x=15,y=200)# 文本结果信息添加到粘贴板中
tk.Button(app,text='全部复制',command=Copy).place(x=160,y=150)app.mainloop()

http://chatgpt.dhexx.cn/article/DZ4hG3RG.shtml

相关文章

matlab复杂函数多元函数拟合

简介 本文介绍了基于matlab实现的复杂函数以及多元函数的拟合。在工程和研究中偶尔会遇到要用一个非常复杂的数学公式来拟合实验测量数据&#xff0c;对这些复杂的数学公式拟合时&#xff0c;采用常见的拟合方法往往会失败&#xff0c;或者得不到足够精确的结果。本文以笔者多…

5.5matlab曲线拟合(多项式函数拟合)

曲线拟合的三种功能: (1)估算数据 (2)预测趋势 (3)总结规律 1、引例-人口预测问题 人口增长是当今世界上都关注的问题&#xff0c;对人口增长趋势进行预测是各国普遍的做法。已知某国1790年到2010年间历次人口普查数据如下表所示&#xff0c;请预测该国2020年的人口数。 解决思…

matlab自定义函数拟合散点

假若现在我们有如下的二维散点&#xff1a; x1:10; y[99.999 50.499 20.333 10.788 4.8111 2.7500 1.2322 0.4861 0.29501 0.1113498]; 在了解这些散点的大致分布之后&#xff0c;我们可以自己定义和其有相同单调性的函数来对散点进行拟合。 看其分布有点像对数函数&…

如何用matlab拟合二元函数,matlab二元函数拟合怎么设计函数。

matlab二元函数拟合怎么设计函数。 mip版 关注:169 答案:2 悬赏:20 解决时间 2021-01-24 19:12 已解决 2021-01-24 01:01 下面是数据,要求拟合一个二元函数,自变量为a,b。请问在非线性拟合之前怎么设计函数,使其拟合误差最小。很急,请大家帮帮忙。 a\b6.187.58.710.812…

matlab拟合函数 自定义,MATLAB 自定义函数拟合

%自定义拟合函数f(t)a*cos(k*t)*exp(w*t) clc,clear syms t x[0;0.4;1.2;2;2.8;3.6;4.4;5.2;6;7.2;8;9.2;10.4;11.6;12.4;13.6;14.4;15];%列向量 y[1;0.85;0.29;-0.27;-0.53;-0.4;-0.12;0.17;0.28;0.15;-0.03;-0.15;-0.071;0.059;0.08;0.032;-0.015;-0.02]; ffittype(a*cos(k*t…

false函数matlab,ISNUMBER函数使用表达式说明表 matlab拟合函数表达式

ISNUMBER函数使用表达式说明表 matlab拟合函数表达式,【excel助手】今天为大家分享一篇干货知识&#xff0c;如何设置matlab拟合函数表达式&#xff0c;今天的分享角度是从工作中常用的角度谈的&#xff0c;正如标题提到的“ISNUMBER函数使用表达式说明表 matlab拟合函数表达式…

Matlab-函数拟合

文章目录 0. 评价指标1. 工具箱拟合——cftool2. 万能拟合 ——nlinfit3. 多项式拟合 ——polyfit参考 0. 评价指标 一、SSE(和方差) 该统计参数计算的是拟合数据和原始数据对应点的误差的平方和&#xff0c;计算公式如下 SSE越接近于0&#xff0c;说明模型选择和拟合更好&…

MATLAB函数拟合使用

1 函数命令拟合 最常用的函数拟合命令为fit&#xff0c;语法为| [拟合结果 拟合精度]&#xff1d;fit&#xff08;X数据&#xff0c;Y数据&#xff0c;‘拟合类型’&#xff09; 其中&#xff0c;具体的拟合类型可以参看帮助文档&#xff0c;也可以使用fittype来自定义新的函数…

MATLAB函数拟合指令,MATLAB拟合函数使用说明

(由于不方便上传公式,有部分直接截图) 2. Polyval函数 对应多项式拟合,多项式求值函数也相当重要,可以通过设定向量,快速定义如下多项式 据此,可以大概猜测到polyval调用的形式了 y = polyval(p,x) 如上所述 [y,delta] = polyval(p,x,S) S即为polyfit函数返回的误差估计,…

基于MATLAB的函数拟合

资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/86763950 资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/86763950 函数拟合 整体思路 将给定的坐标点分为 6 段部分&#xff0c;即左、左下、下、右、右上、上&#xff0…

【Matlab基础】数据拟合

目录 一、线性拟合 1. 常用辅助函数 2. 多元线性拟合 例子&#xff1a; 二、多项式拟合 三、lsqcurvefit函数 例子1&#xff1a; 例子2&#xff1a; 四、nlinfit非线性拟合 例子1&#xff1a; 例子2&#xff1a; 五、其他拟合函数 lsqnonlin fittype 一、线性拟合…

matlab 简单函数拟合(全)

学习笔记 对数据进行函数拟合有四种方式具体见连接 方法一&#xff1a;多项式拟合polyfit 方法二&#xff1a;工具箱拟合cftool 方法三&#xff1a;指定函数拟合 连接&#xff1a;matlab拟合函数的三种方法_Bily_on的博客-CSDN博客_matlab数据拟合 方法四是而利用regress函…

matlab拟合函数的三种方法

文章目录 方法一&#xff1a;多项式拟合polyfit方法二&#xff1a;工具箱拟合cftool方法三&#xff1a;指定函数拟合 方法一&#xff1a;多项式拟合polyfit x[1 2 3 4 5 6 7 8 9];y[9 7 6 3 -1 2 5 7 20]; P polyfit(x, y, 3) %三阶多项式拟合xi0:.2:10; yi polyval(P, xi)…

获取当前时间戳

获取当前时间戳 //方法 一 System.currentTimeMillis(); //方法 二 Calendar.getInstance().getTimeInMillis(); //方法 三 new Date().getTime(); 获取当前时间 SimpleDateFormat df new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 String date df.…

C# 获取当前时间戳(正确版)

https://www.cnblogs.com/yinmu/p/11228196.html 第一种&#xff1a; /// <summary>/// 获取时间戳/// </summary>/// <returns></returns>public string GetTimeStamp(){TimeSpan ts DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0);return Co…

SQLserver 获取当前时间戳

SQLserver 获取当前时间戳&#xff1a; SELECT DATEDIFF(S,1970-01-01 00:00:00, GETUTCDATE()) SELECT DATEDIFF(S,‘1970-01-01 00:00:00’,GETDATE()) select SYSDATETIME() select GETDATE() select GETUTCDATE() 1.GETUTCDATE是获取格林尼治时间函数 2.GETDATE是获取北…

小程序获取当前时间戳

使用Date.parse(new Date())默认生成的时间戳是以毫秒为单位的。 可以根据业务需求&#xff0c;通过除以1000&#xff0c;来转化为秒。因为生成的时间戳末尾是000&#xff0c;所以不用担心不是整除。 控制台打印 可在js中引用以下代码 var timeStamp Date.parse(new Date()…

LocalDateTime获取当前时间戳

以上都是获取当前时间的时间戳。而要想使用localdateTime获取当前时间&#xff0c;只需要LocalDateTime.now()即可。 输出结果如下&#xff1a;

python获取当前时间戳_python 获取当前时间戳

原博文 2019-01-04 10:42 − #!/usr/bin/python # -*- coding: UTF-8 -*- import time; # 引入time模块 ticks = time.time() print("当前时间戳为:", ticks) 输出: 当前时间戳为: 1459994552.51 &nbsp... 相关推荐 2019-12-06 10:29 − 1.获取当前时间的时…

JS获取当前时间戳与时间戳转日期时间格式

一、获取当前时间的时间戳(三种方式) const t1 new Date().valueOf() // 第一种&#xff0c;推荐 const t2 new Date().getTime() // 第二种&#xff0c;推荐 const t3 Date.parse(new Date()) // 第三种&#xff0c;不推荐&#xff0c;精度差一些注&#xff1a; new Date(…