应群友要求,要做一个图片转文字的格式,因为有些人的简历中只有一张图片要提取他里面的文字就不好办了。

于是就有了下面这个小工具:

功能:选择要识别的图片后,识别出来后存到.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 图片转文字小工具的更多相关文章

  1. InkImageDataSetGenerator-开源一个可用于机器学习的书写轨迹图片生成的小工具

    这是一个简单易用的图片数据集生成小工具,基于OpenCV和UWP Ink API,它可以根据指定的手写轨迹生成一系列各个角度的图片.每张图片的尺寸和总体数量都是可以指定的,均存放在统一的生成目录中.h ...

  2. python开发目录合并小工具 PathMerge

    前言 这个程序陆陆续续开发了几天,正好我在学Python,就一边做一边学,倒是学到不少东西. 不得不说python是快速开发的好工具. 程序做了一些改进,这两天又忙着毕设,现在才想起来发到博客上.想想 ...

  3. python 3.6 MJ小工具

    2017.07.14 update 做了个界面,不需要使用cmd命令行+文件路径的方式来使用了: 链接如下: http://www.cnblogs.com/chenyuebai/p/7150382.h ...

  4. 语音转文字小工具开发Python

    # -*- coding: utf- -*- import requests import re import os import time from aip import AipSpeech fro ...

  5. 目不识丁的我使用Python编写汉字注音小工具

    一万点暴击伤害 人懒起来太可怕了,放了个十一充分激发了我的惰性.然后公众号就这么停了半个月,好惭愧- 新学期儿子的幼儿园上线了APP,每天作业通过app布置后,家长需要陪着孩子学习,并上传视频才算完成 ...

  6. python转exe的小工具

    其实只是在cxfreeze的基础上加了个壳,做成窗口软件了 使用了pyqt做的界面,软件发布在了开源中国上,可以直接去下面的地址查看 http://git.oschina.net/robocky/py ...

  7. python之字符聊天小工具

    server side: # coding: gb2312#socket server端#获取socket构造及常量from socket import *#''代表服务器为localhostmyHo ...

  8. Python: tkinter实例改名小工具

    #!/usr/bin/env python #coding=utf-8 # # 版权所有 2014 yao_yu (http://blog.csdn.net/yao_yu_126) # 本代码以MIT ...

  9. 入坑python 自己写的小工具,纪念一下

    这个程序的功能是可以从表格中读取某一列数据,传到IDs 这一个参数里,然后在url中获取相应的请求值,并打印 import urllib.request import json import xlrd ...

  10. python一些实用的小工具

    1  搭一个简易的本地局域网  python -m http.server 2 获取当前目录下的所有文件名 3 进度条效果 import sys,time for i in range(50): sy ...

随机推荐

  1. NC16527 [NOIP2013]货车运输

    题目链接 题目 题目描述 A 国有 n 座城市,编号从 1 到 n ,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆 ...

  2. NC17890 方格填色

    题目链接 题目 题目描述 给一个m x n的方格,Applese想要给方格填上颜色,每个格子可以是黑色或者白色.他要求左右相邻两格不能同为白色且相邻两列不能全为黑色. 求满足条件的方案数. 输入描述 ...

  3. Vue中data为何以函数形式返回

    data为何以函数形式返回 在使用Vue构建组件化应用时,每个组件的data属性都是以函数形式返回的,这主要是在组件化实现的时候,每个实例可以维护一份被返回对象的独立的拷贝,而不是共享同一个对象的引用 ...

  4. spring boot 2.0集成并使用redis

    项目地址:https://gitee.com/indexman/spring_boot_in_action 前面一章介绍了spring boot自带的缓存,下面讲一下如何在2.0版本中集成并使用red ...

  5. 【LeetCode剑指offer#05】回文链表的两种解法+删除链表中间节点(链表的基本操作)

    回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表.如果是,返回 true :否则,返回 false . 示例 1: 输入:head = [1,2,2,1] 输出:true 示 ...

  6. 名校AI课推荐 | MIT6.S191《深度学习导论》

    "连续开设5年,对新手友好.易于上手,参加课程的多数学生来自非计算机科学领域--" 推荐一门AI课程--MIT官方深度学习入门课程6.S191<深度学习导论(2022)> ...

  7. [golang] 变量声明和初始化 var, :=, new() 和 make()

    [golang] 变量声明和初始化 var, :=, new() 和 make() 说明 go语言中,提供了多种变量声明和初始化的方法.这里着重一一说明.并提供一个简单的指南. 指南 使用make() ...

  8. 【Flink入门修炼】2-2 Flink State 状态

    什么是状态?状态有什么作用? 如果你来设计,对于一个流式服务,如何根据不断输入的数据计算呢? 又如何做故障恢复呢? 一.为什么要管理状态 流计算不像批计算,数据是持续流入的,而不是一个确定的数据集.在 ...

  9. api网关介绍

    1.什么是网关 API网关是一个系统的唯一入口. 是众多分布式服务唯一的一个出口. 它做到了物理隔离,内网服务只有通过网关才能暴露到外网被别人访问. 简而言之:网关就是你家的大门 2.提供了哪些功能 ...

  10. ThinkPHP 3.2.3

    说明手册 https://www.kancloud.cn/manual/thinkphp/1706 下载地址 https://gitee.com/liu21st/thinkphp32 thinkPHP ...