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

效果图

使用方法

提取文本的步骤:

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

然后

方法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.filedialog

from  PIL import Image,ImageTk
from aip import AipOcr

from 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:
        return
    print(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()

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要用Python实现一个文字识别系统GUI页面,可以使用Tkinter库来创建GUI界面。同时,需要使用OCR(Optical Character Recognition)技术来实现文字识别功能。以下是一些可能的实现步骤: 1. 安装必要的库:首先需要安装Python的Tkinter库和OCR库,如pytesseract。可以使用pip命令来安装这些库。 2. 创建GUI界面:使用Tkinter库创建一个窗口,包含文件选择识别按钮。 3. 选择图片:使用文件选择让用户选择需要识别的图片。可以使用Python的filedialog库来实现文件选择。 4. 转换图片:使用Python的Pillow库打开并转换图片格式,以便OCR库可以识别。 5. 进行文字识别:使用OCR库对图片进行文字识别。 6. 显示结果:将识别结果显示在GUI界面上,可以使用Tkinter的Label组件。 以下是一个简单Python代码示例,实现了一个基本的文字识别系统GUI页面: ```python import tkinter as tk from tkinter import filedialog from PIL import Image, ImageTk import pytesseract class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.create_widgets() def create_widgets(self): self.file_label = tk.Label(self, text="Select Image:") self.file_label.pack() self.file_button = tk.Button(self, text="Browse", command=self.select_file) self.file_button.pack() self.recognize_button = tk.Button(self, text="Recognize", command=self.recognize) self.recognize_button.pack() self.result_label = tk.Label(self, text="") self.result_label.pack() def select_file(self): self.filename = filedialog.askopenfilename(initialdir="/", title="Select file", filetypes=(("jpeg files", "*.jpg"), ("all files", "*.*"))) self.file_label.config(text=self.filename) self.image = Image.open(self.filename) self.image = self.image.convert('RGBA') self.photo = ImageTk.PhotoImage(self.image) self.img_label = tk.Label(self, image=self.photo) self.img_label.pack() def recognize(self): text = pytesseract.image_to_string(self.image) self.result_label.config(text=text) root = tk.Tk() app = Application(master=root) app.mainloop() ``` 以上代码实现了一个基本的文字识别GUI页面,包括文件选择识别按钮和识别结果显示。当用户选择图片并点击识别按钮后,程序会调用OCR库对图片进行文字识别,并将识别结果显示在GUI界面上。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值