文字识别的可视化实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

有时候办公或者处理事情的时候,我们往往是看图品进行文字识别,就像最近我看我女朋友对着图片打字实在是太辛苦了,自己恰好这段时间也有空于是我就决定设计一个软件来帮助我们更好地处理图片上的文字。现在已经打包成exe软件下载格式有需要的或想要交流的可以加我q:2209074440亲请备注好来意哦亲.
下面让大家看下成果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
**

识别的图片为在这里插入图片描述
在这里插入图片描述
直接拖入软件中将自动显示路径
点击按钮进行识别
在这里插入图片描述

当然还需要自己微型调整下已经很方便了。

提示:以下是本篇文章正文内容,下面案例可供参考

一、前期准备

注册百度AI开放平台账号(https://ai.baidu.com/)有进一步开发打算或为了更加方便可以考虑像我一样注册百度智能云账号挺快的不要嫌烦老铁们花不了多少时间,注册完之后搜索文字识别如图在这里插入图片描述
点击这里的放大镜直接搜索文字识别即可,然后可以了不过现在白嫖的人可能多了百度多了点限制要人脸认证,我做完这个是很早之前,今天去看有些免费资源被取消了,所以只能老老实实去做个人脸,建议手机百度扫码做,我百度智能云扫码打开的是自带浏览器做了好久都没有通过,百度扫脸一下子通过了。
过了之后你在搜文字识别,点击进去选择立即使用在这里插入图片描述
即可,完成人脸的,在创建应用后,控制台旁边会有个免费白嫖按钮,
在这里插入图片描述

你想要识别什么点击就好,然后就会相应产生功能,完成了这些后,我们基本准备已经完成,但不要忘记记住你应用的id、APIid等可以不用关掉页面等下就会用到。
在这里插入图片描述

二、开始操作

因为女朋友也不会用什么编程软件,所以我更加直观做了简单的可视化界面,很简陋所谓山不在高有龙仙则灵水不在深有龙则灵,所以灵魂很重要好吧,外表不是关键。不多废话了开始操作,引入需要的库包括我的可视化库,后来打包成软件需要的库,以及百度的库。

import tkinter as tk
from tkinter import *
import windnd
from aip import AipOcr
import tkinter
import base64
from icon import img
import os

然后创建对象

APP_ID = '填你自己的'
API_KEY = '填你自己的'
SECRET_KEY = '填你自己的'

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

设计可视化页面小小的优化下加点人性化东西,车子不大好歹要保证能跑是吧

zhu=tk.Tk()
zhu.title("图片提取")
canvas = Canvas(zhu, width=500,height=600)
v = StringVar()
zhu.geometry("500x600+500+100")
canvas.create_window(75, 100, window=Label(zhu,text = "路径:",font=('宋体', 15), fg="blue",justify='left'))
a=Entry(zhu,borderwidth=3,width=50,textvariable=v)
canvas.create_window(275, 100, window=a)
t=Text(zhu,width=60, height=30)
canvas.create_window(250,370,window=t)


scroll = tkinter.Scrollbar()
# 放到窗口的右侧, 填充Y竖直方向
scroll.pack(side=tkinter.RIGHT, fill=tkinter.Y)

# 两个控件关联
scroll.config(command=t.yview)
t.config(yscrollcommand=scroll.set)

接着要考虑到便捷,总不能让女朋友慢慢的敲文件路径吧,设计程序实现拖入显示文件路径,

def dragged_files(files):
    msg = '\n'.join((item.decode('gbk') for item in files))
    v.set(msg)
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()  # 获取图片信息

这样你只要把图片拖进来就可以解决,实现自动化填写路径,感动到落泪,
最后就是把图片上传实现文字的返回

def shibie():
    image = get_file_content(a.get())  # 与当前py文件在同一路径下
    options = {}
    options["language_type"] = "CHN_ENG"
    options["detect_direction"] = "false"
    options["detect_language"] = "true"
    options["probability"] = "true"  # 配置相关参数

    result = client.basicGeneral(image, options)

    for i in result["words_result"]:
        t.insert(INSERT,i["words"]+"\n")

`这里我设计了文本框所以弹回到文本框中,
最后考虑到美观,设计一些图标啥的美化界面,

tmp = open('tmp.ico', 'wb+')
tmp.write(base64.b64decode(img))
tmp.close()
zhu.iconbitmap('tmp.ico')
os.remove('tmp.ico')
canvas.pack()

我这里就是加了个图标,但是图标只会在本机生效,所以我决定直接把图片做成程序一起打包进去这样女朋友打开也能看到我的一片心意了
附上图标代码

import base64

open_icon = open("r.ico", "rb")  # r.ico为你要放入的图标
b64str = base64.b64encode(open_icon.read())  # 以base64的格式读出
open_icon.close()
write_data = "img=%s" % b64str
f = open("icon.py", "w+")  # 将上面读出的数据写入到icon.py的img数组中
f.write(write_data)
f.close()

这段代码代码意思就是让你把图标以数据形式写入,方便最后打包一起携带

总结

最后附上所有代码,先应用打包图标代码,在运行窗口代码,参考了很多文章,有很多东西自己摆弄的没有发布,陆续会将这些东西发布出来。

import base64

open_icon = open("r.ico", "rb")  # qq.icon为你要放入的图标
b64str = base64.b64encode(open_icon.read())  # 以base64的格式读出
open_icon.close()
write_data = "img=%s" % b64str
f = open("icon.py", "w+")  # 将上面读出的数据写入到qq.py的img数组中
f.write(write_data)
f.close()
import tkinter as tk
from tkinter import *
import windnd
from aip import AipOcr
import tkinter
import base64
from icon import img
import os

APP_ID = '填自己的哦'
API_KEY = '亲填自己的哦'
SECRET_KEY = '亲亲填自己的哦不是让你填我这个是填你申请的应用的这三样东东'

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

zhu=tk.Tk()
zhu.title("图片提取")
canvas = Canvas(zhu, width=500,height=600)
v = StringVar()
zhu.geometry("500x600+500+100")
canvas.create_window(75, 100, window=Label(zhu,text = "路径:",font=('宋体', 15), fg="blue",justify='left'))
a=Entry(zhu,borderwidth=3,width=50,textvariable=v)
canvas.create_window(275, 100, window=a)
t=Text(zhu,width=60, height=30)
canvas.create_window(250,370,window=t)


scroll = tkinter.Scrollbar()
# 放到窗口的右侧, 填充Y竖直方向
scroll.pack(side=tkinter.RIGHT, fill=tkinter.Y)

# 两个控件关联
scroll.config(command=t.yview)
t.config(yscrollcommand=scroll.set)

def dragged_files(files):
    msg = '\n'.join((item.decode('gbk') for item in files))
    v.set(msg)
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()  # 获取图片信息
def shibie():
    image = get_file_content(a.get())  # 与当前py文件在同一路径下
    options = {}
    options["language_type"] = "CHN_ENG"
    options["detect_direction"] = "false"
    options["detect_language"] = "true"
    options["probability"] = "true"  # 配置相关参数

    result = client.basicGeneral(image, options)

    for i in result["words_result"]:
        t.insert(INSERT,i["words"]+"\n")
canvas.create_window(250,150,window=Button(zhu, text="识别", font=('宋体', 15), width=7, bg='cyan', command=shibie))
windnd.hook_dropfiles(zhu,func=dragged_files)

tmp = open('tmp.ico', 'wb+')
tmp.write(base64.b64decode(img))
tmp.close()
zhu.iconbitmap('tmp.ico')
os.remove('tmp.ico')
canvas.pack()

zhu.mainloop()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值