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编程中用close()方法关闭文件的教程
May 24 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
Jul 22 Python
python 信息同时输出到控制台与文件的实例讲解
May 11 Python
python 去除txt文本中的空格、数字、特定字母等方法
Jul 24 Python
学生信息管理系统python版
Oct 17 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
Dec 11 Python
python 读取dicom文件,生成info.txt和raw文件的方法
Jan 24 Python
Python2与Python3的区别实例总结
Apr 17 Python
python basemap 画出经纬度并标定的实例
Jul 09 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 Python
Django与AJAX实现网页动态数据显示的示例代码
Feb 24 Python
Python基础之变量的相关知识总结
Jun 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
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
JS定时关闭窗口的实例
2013/05/22 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
JQuery Highcharts 动态生成图表的方法
2013/11/15 Javascript
javascript调试之DOM断点调试法使用技巧分享
2014/04/15 Javascript
让人蛋疼的JavaScript语法特性
2014/09/30 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
js date 格式化
2017/02/15 Javascript
微信小程序 实例开发总结
2017/04/26 Javascript
JS中精巧的自动柯里化实现方法
2017/12/12 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
原生JS与CSS实现软件卸载对话框功能
2019/12/05 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
学习python可以干什么
2019/02/26 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
python如何安装下载后的模块
2020/07/03 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
面向对象概念面试题(.NET)
2016/11/04 面试题
办公室岗位职责
2014/02/12 职场文书
境外导游求职信
2014/02/27 职场文书
房地产活动策划方案
2014/05/14 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
vue router 动态路由清除方式
2022/05/25 Vue.js