python实现连续图文识别


Posted in Python onDecember 18, 2018

本文实例为大家分享了python实现连续图文识别的具体代码,供大家参考,具体内容如下

1.工具:

1.1 剪切板。我下载并安装使用的是剪切板查看器(clipbrd.exe),成功后显示“剪贴薄查看器.exe”

1.2  截图工具并设置热键。保存图片键和退出键可任意设置,注意不能同其它热键冲突。我使用的是微信截图,进入设置---进入快捷按键---把截取屏幕键改为F1。

1.3 Python 3.x,Windows环境

1.4 注册百度云帐号,获取Appid  API Key   Secret Key 

1.5 新建文件夹。我建的名叫‘图文识别'文件夹(C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\图文识别)

1.6 ‘图文识别'文件夹下,有3个.py文件,分别是:screenshot.py  baiduap.py  getText.py;有1个配置文本文件是password.ini;有个图像文件是Picture.png。

1.7 需要有以下第三方库:keyboard、PIL、aip、configparser、win32con、win32clipboard。

2 完整代码:

2.1 screenshot.py是主程序,可独立运行,主要功能为截图并保存。

""" 本程序可独立运行,主要功能是截图并保存"""
import sys
from time import sleep
import keyboard
from PIL import ImageGrab #pillow
from baiduap import BaiDuAPI
from getText import GetText
 
def screenShot():
   """用于截图并保存"""
   print('请按F1开始截图')
   if keyboard.wait(hotkey='f1')==None:
     print('复制剪切板的图片,请按Ctrl+b,不复制继续截图')
     if keyboard.wait(hotkey='Ctrl+b')==None:
        sleep(0.02) #防止获取的是上一张截图
        #复制剪贴板里面的图片
        im=ImageGrab.grabclipboard()
        im.save('Picture.png')
 
if __name__=='__main__':
   baiduapi=BaiDuAPI('password.ini')
   for _ in range(sys.maxsize):
     screenShot()
     texts=baiduapi.picture2Text('Picture.png') 
     print(texts)
     GetText.setText(texts)  #剪贴板剪贴
     sleep(0.02)
     GetText.getText()
     print('退出请按Ctrl+x') 
     if keyboard.wait(hotkey='Ctrl+x')==None:
        name=input('请输入保存图像识别文字文件名:')
        f=open(name+'.txt','w')
        f.write(texts)
        f.close()
        break

2.2 baiduap.py 程序可独立使用,主要功能是图像文字识别。

from aip import AipOcr
import configparser
 
class BaiDuAPI:
   """图片文字识别"""
   #初识化方法
   def __init__(self,filePath): #self 就是BaiDuAPI()
     #读取工单信息
     target=configparser.ConfigParser()
     target.read(filePath)
     app_id=target.get('我的工单','App_ID')
     app_key=target.get('我的工单','App_KEY')
     secret_key=target.get('我的工单','SECRET_KEY')
     self.client=AipOcr( app_id, app_key,secret_key)
 
   def picture2Text(self,filePath):
     #读取图片
     image=self.getPicture(filePath)
     texts=self.client.basicGeneral(image)
     #print(texts['words_result'])
     allTexts=''
     for word in texts['words_result']:
        allTexts=allTexts+word.get('words','')
     return allTexts
    
   @staticmethod  
   def getPicture(filePath):
     with open(filePath,'rb') as fp:
        return fp.read()
 
if __name__=='__main__':
   baiduapi=BaiDuAPI('password.ini')
   print(baiduapi.picture2Text('Picture.png'))

2.3 getText.py 程序,主要功能是把图像识别出来的文字,保存到剪切板。

import sys 
import os.path 
import win32clipboard as w  
import win32con 
 
class GetText:
   
   def getText():#读取剪切板 
     w.OpenClipboard() 
     d = w.GetClipboardData(win32con.CF_TEXT) 
     w.CloseClipboard() 
     return d 
   def setText(aString):#写入剪切板 
     w.OpenClipboard() 
     w.EmptyClipboard() 
     w.SetClipboardText(aString) 
     w.CloseClipboard() 
 
if __name__=='__main__': 
   GetText.setText('布衣弓长')
   GetText.getText()

2.4 password.ini 文件,用记事本编写,把百度云获取的相关信息填进去。内容是:

[我的工单];节
App_ID=151313**
App_KEY=1V2LlBhLUYaHu2Y9*******
SECRET_KEY=fGufC1CbiZ0tw1imTGoIsaGO******

3.运行。启动qq和剪贴薄查看器.exe,在python环境下运行screenshot.py。

经实测:识别率高,能快速抓取多图,但每运行一次程序,只能识别保存在Picture.png文件里图像的文字。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python的Twisted框架构建非阻塞下载程序的实例教程
May 25 Python
tensorflow创建变量以及根据名称查找变量
Mar 10 Python
对python过滤器和lambda函数的用法详解
Jan 21 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
Nov 19 Python
python3 求约数的实例
Dec 05 Python
keras获得某一层或者某层权重的输出实例
Jan 24 Python
Python图像处理库PIL的ImageFont模块使用介绍
Feb 26 Python
python中数据库like模糊查询方式
Mar 02 Python
使用python创建生成动态链接库dll的方法
May 09 Python
pytorch 常用函数 max ,eq说明
Jun 28 Python
python自动化测试通过日志3分钟定位bug
Nov 20 Python
python 镜像环境搭建总结
Sep 23 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 #Python
Python列表list排列组合操作示例
Dec 18 #Python
python实现二维插值的三维显示
Dec 17 #Python
Python实现分段线性插值
Dec 17 #Python
Python 获取主机ip与hostname的方法
Dec 17 #Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 #Python
python样条插值的实现代码
Dec 17 #Python
You might like
PHP判断是否连接上网络的方法
2015/07/01 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
JavaScript function函数种类详解
2016/02/22 Javascript
js实现数字递增特效【仿支付宝我的财富】
2017/05/05 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
2018/04/05 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
vue中touch和click共存的解决方式
2020/07/28 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
Python使用新浪微博API发送微博的例子
2014/04/10 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
python实现简单成绩录入系统
2019/09/19 Python
详细分析Python垃圾回收机制
2020/07/01 Python
html+css3实现的登录界面
2020/12/09 HTML / CSS
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
信息管理专业推荐信
2013/10/29 职场文书
法学毕业生自荐信
2013/11/13 职场文书
技术学校毕业生求职信分享
2013/12/02 职场文书
农村婚礼证婚词
2014/01/08 职场文书
中学教师自我鉴定
2014/02/07 职场文书
《囚绿记》教学反思
2014/03/01 职场文书
QQ空间主人寄语大全
2014/04/12 职场文书
房地产广告策划方案
2014/05/15 职场文书
委托书怎样写
2014/08/30 职场文书
安全生产月标语
2014/10/07 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书