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 相关文章推荐
详解Python3.1版本带来的核心变化
Apr 07 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
Mar 15 Python
Django实现登录随机验证码的示例代码
Jun 20 Python
TensorFlow实现iris数据集线性回归
Sep 07 Python
Python操作mongodb数据库的方法详解
Dec 08 Python
python使用phoenixdb操作hbase的方法示例
Feb 28 Python
python中的itertools的使用详解
Jan 13 Python
Python logging模块handlers用法详解
Aug 14 Python
基于CentOS搭建Python Django环境过程解析
Aug 24 Python
Python内置包对JSON文件数据进行编码和解码
Apr 12 Python
python 单机五子棋对战游戏
Apr 28 Python
python神经网络Xception模型
May 06 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数组函数序列之array_combine() - 数组合并函数使用说明
2011/10/29 PHP
destoon安装出现Internal Server Error的解决方法
2014/06/21 PHP
php遍历目录方法小结
2015/03/10 PHP
PHP可变函数学习小结
2015/11/29 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
PHP多进程简单实例小结
2019/11/09 PHP
Javascript中的Array数组对象详谈
2014/03/03 Javascript
JavaScript函数的4种调用方法详解
2014/04/22 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
javascript实现根据时间段显示问候语的方法
2015/06/18 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
jquery与ajax获取特殊字符实例详解
2017/01/08 Javascript
jQuery中each方法的使用详解
2018/03/18 jQuery
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
微信小程序之onLaunch与onload异步问题详解
2019/03/28 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
Ant-design-vue Table组件customRow属性的使用说明
2020/10/28 Javascript
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
跟老齐学Python之网站的结构
2014/10/24 Python
Python中有趣在__call__函数
2015/06/21 Python
python实现京东秒杀功能
2018/07/30 Python
详解Django-restframework 之频率源码分析
2019/02/27 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
html5画布旋转效果示例
2014/01/27 HTML / CSS
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
捷克街头、运动和滑板一站式商店:BoardStar.cz
2019/10/06 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
军训的自我鉴定
2013/12/10 职场文书
本科毕业生求职自荐信
2014/02/03 职场文书
大学辅导员事迹材料
2014/02/05 职场文书
二手房购房协议书范本
2014/10/05 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
tensorflow中的梯度求解及梯度裁剪操作
2021/05/26 Python