python 图片转文字小工具
应群友要求,要做一个图片转文字的格式,因为有些人的简历中只有一张图片要提取他里面的文字就不好办了。
于是就有了下面这个小工具:
功能:选择要识别的图片后,识别出来后存到.txt文本中。
实现原理,基于百度“文字识别”通用版的api接口调用。
有一点需要说明的是可能无法识别百分百准确的,格式排版还是要人为去处理一下。

代码如下:
from aip import AipOcr
from PIL import Image as PImage
from PIL import ImageTk
from tkinter import *
from tkinter import filedialog
将图片内容翻译为文字,显示在文本框内
def trans():
# """ 你的 APPID AK SK """
APP_ID = ''
API_KEY = ''
SECRET_KEY = '*************'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
contents.delete('1.0', END)
transTxt = client.basicGeneral(open(filePath.get(), 'rb').read())
# 对transTxt进行处理 去空格,换行符去重
transTxt=transTxt['words_result']
# transTxt=[{'words': '每个人总在仰望和'}, {'words': '羡慕着别人的幸福'}, {'words': '一回头'}, {'words': '却发现自己正被别'}, {'words': '人仰望和羡慕着'}]
words_content=''
for words in transTxt:
values =words['words']
words_content +=values+'\n'
print(words_content)
contents.insert(INSERT,words_content)
# 将文字保存到TXT文件
with open(filePath.get()+'_to_word.txt', 'w') as f:
f.write(words_content)
打开图片文件,显示路径,并将图片展现
def openfile():
filename.delete('1.0', END)
filePath.set(filedialog.askopenfilename())
filename.insert(1.0, filePath.get())
org_img = PImage.open(filePath.get())
# 调整图片显示大小 600*800
w, h = org_img.size
if w > 600:
h = int(h * 600 / w)
w = 600
if h > 800:
w = int(w * 800 / h)
h = 800
img = ImageTk.PhotoImage(org_img.resize((w, h)))
showPic.config(image=img)
showPic.image = img # 保持一个引用才能显示图片,tkinter的BUG
设置主窗口
top = Tk()
top.title("图片转文字 引擎:百度云API文字识别 Made by: Running")
top.iconbitmap("./pic/y1.ico")
top.geometry("800x600")
filePath = StringVar()
第一个窗体
frame1 = Frame(top, relief=RAISED, borderwidth=2)
frame1.pack(side=TOP, fill=BOTH, ipady=5, expand=0)
Label(frame1, height=1, text="图片路径:").pack(side=LEFT)
filename = Text(frame1, height=2)
filename.pack(side=LEFT, padx=1, pady=0, expand=True, fill=X)
Button(frame1, text="打开文件", image='', command=openfile).pack(side=LEFT, padx=5, pady=0)
Button(frame1, text="识别图片", image='', command=trans).pack(side=LEFT, padx=5, pady=0)
第二个窗体
frame2 = Frame(top, relief=RAISED, borderwidth=2)
frame2.pack(side=LEFT, fill=BOTH, expand=1)
Label(frame2, text='待识别的图片:', borderwidth=5).pack(side=TOP, padx=20, pady=5)
showPic = Label(frame2, text='图片显示区')
showPic.pack(side=BOTTOM, expand=1, fill=BOTH)
第三个窗体
frame3 = Frame(top)
frame3.pack(side=RIGHT, fill=BOTH, expand=1)
contents = ScrolledText(frame3)
Label(frame3, text='图片识别结果:', borderwidth=5).pack(side=TOP, padx=20, pady=10)
contents = Text(frame3, font=('Arial', 15))
contents.pack(side=TOP, expand=1, fill=BOTH)
Label(frame3, text='Copyright 2024 baidu.com ALL Rights Reserved', borderwidth=5).pack(side=BOTTOM, padx=20, pady=10)
top.mainloop()
python 图片转文字小工具的更多相关文章
- InkImageDataSetGenerator-开源一个可用于机器学习的书写轨迹图片生成的小工具
这是一个简单易用的图片数据集生成小工具,基于OpenCV和UWP Ink API,它可以根据指定的手写轨迹生成一系列各个角度的图片.每张图片的尺寸和总体数量都是可以指定的,均存放在统一的生成目录中.h ...
- python开发目录合并小工具 PathMerge
前言 这个程序陆陆续续开发了几天,正好我在学Python,就一边做一边学,倒是学到不少东西. 不得不说python是快速开发的好工具. 程序做了一些改进,这两天又忙着毕设,现在才想起来发到博客上.想想 ...
- python 3.6 MJ小工具
2017.07.14 update 做了个界面,不需要使用cmd命令行+文件路径的方式来使用了: 链接如下: http://www.cnblogs.com/chenyuebai/p/7150382.h ...
- 语音转文字小工具开发Python
# -*- coding: utf- -*- import requests import re import os import time from aip import AipSpeech fro ...
- 目不识丁的我使用Python编写汉字注音小工具
一万点暴击伤害 人懒起来太可怕了,放了个十一充分激发了我的惰性.然后公众号就这么停了半个月,好惭愧- 新学期儿子的幼儿园上线了APP,每天作业通过app布置后,家长需要陪着孩子学习,并上传视频才算完成 ...
- python转exe的小工具
其实只是在cxfreeze的基础上加了个壳,做成窗口软件了 使用了pyqt做的界面,软件发布在了开源中国上,可以直接去下面的地址查看 http://git.oschina.net/robocky/py ...
- python之字符聊天小工具
server side: # coding: gb2312#socket server端#获取socket构造及常量from socket import *#''代表服务器为localhostmyHo ...
- Python: tkinter实例改名小工具
#!/usr/bin/env python #coding=utf-8 # # 版权所有 2014 yao_yu (http://blog.csdn.net/yao_yu_126) # 本代码以MIT ...
- 入坑python 自己写的小工具,纪念一下
这个程序的功能是可以从表格中读取某一列数据,传到IDs 这一个参数里,然后在url中获取相应的请求值,并打印 import urllib.request import json import xlrd ...
- python一些实用的小工具
1 搭一个简易的本地局域网 python -m http.server 2 获取当前目录下的所有文件名 3 进度条效果 import sys,time for i in range(50): sy ...
随机推荐
- 从零开始手写缓存框架(二)redis expire 过期原理及实现
前言 我们在 从零手写 cache 框架(一)实现固定大小的缓存 中已经初步实现了我们的 cache. 本节,让我们来一起学习一下如何实现类似 redis 中的 expire 过期功能. 过期是一个非 ...
- Dota2参议院
Dota2参议院 Dota2的世界里有两个阵营:Radiant天辉和Dire夜魇 Dota2参议院由来自两派的参议员组成.现在参议院希望对一个Dota2游戏里的改变作出决定.他们以一个基于轮转过程的投 ...
- 解决SQLyog连接mysql报错:Your password has expired
解决步骤如下: D:\program\mysql-5.7.16-winx64\bin>mysql -uroot -p Enter password: ******* Welcome to the ...
- 【Android 逆向】【攻防世界】easyjni
1. apk 安装到手机,提示需要输入flag 2. jadx打开apk public class MainActivity extends c { static { System.loadLibra ...
- CUDA、CUDNN 安装
安装 CUDA.CUDNN 1. CUDA CUDA 是 NVIDIA 发明的一种并行计算平台和编程模型.它通过利用图形处理器 (GPU) 的处理能力,可大幅提升计算性能. 官方地址 https:// ...
- 详解 nebula 2.0 性能测试和 nebula-importer 数据导入调优
这是由社区用户--繁凡撰写的一篇他的实践分享,主要讲解如何进行 Nebula 性能测试以及数据导入部分的性能调优.下文中出现的"我"代指用户繁凡. 0. 概要 之前在做 Nebul ...
- 【XInput】手柄模拟鼠标运作之 .NET P/Invoke 和 UWP-API 方案
上一篇中,老周简单肤浅地介绍了 XInput API 的使用,并模拟了鼠标移动,左.右键单击和滚轮.本篇,咱们用 .NET 代码来完成相同的效果. 说起来也是倒霉,博文写了一半,电脑忽然断电了.不知道 ...
- C#/.NET/.NET Core优秀项目和框架2024年2月简报
前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍.功能特点.使用方式以及部分功能截图 ...
- 十五: InnoDB的存储结构
InnoDB的存储结构 1.数据库的存储结构:页 索引结构给我们提供了高效的索引方式,不过索引|信息以及数据记录都是保存在文件上的,确切说是存储在页结构中.另一方面,索引是在存储引擎中实现的,MySQ ...
- 【EasyExcel详细步骤】(内附源码)
页面预览 数据导出 数据导入 第01章-Alibaba EasyExcel 1.EasyExcel介绍 1.1.EasyExcel的作用 数据导入:减轻录入工作量 数据导出:统计信息归档 数据传输:异 ...