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中列表(list)操作方法汇总
Aug 18 Python
python中list列表的高级函数
May 17 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
python 整数越界问题详解
Jun 27 Python
python如何统计代码运行的时长
Jul 24 Python
django的ORM操作 增加和查询
Jul 26 Python
使用python和pygame制作挡板弹球游戏
Dec 03 Python
对python中 math模块下 atan 和 atan2的区别详解
Jan 17 Python
使用keras根据层名称来初始化网络
May 21 Python
python的链表基础知识点
Sep 13 Python
Flask搭建一个API服务器的步骤
May 28 Python
分享7个 Python 实战项目练习
Mar 03 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
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
php simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
javascript+dom树型菜单类,希望朋友们一起进步
2007/05/03 Javascript
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
jQuery EasyUI API 中文文档 - Form表单
2011/10/06 Javascript
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
ES6中的数组扩展方法
2016/08/26 Javascript
详解jQuery设置内容和属性
2019/04/11 jQuery
js实现旋转的星空效果
2019/11/01 Javascript
Vue实现返回顶部按钮实例代码
2020/10/21 Javascript
详解Python编程中基本的数学计算使用
2016/02/04 Python
Python实现句子翻译功能
2017/11/14 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
基于Jquery和Css3代码制作可以缩放的搜索框
2015/11/19 HTML / CSS
美国独家设计师眼镜在线光学商店:Glasses Gallery
2017/12/28 全球购物
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
英文版餐饮运营管理求职信
2013/11/06 职场文书
导购员的岗位职责
2014/02/08 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
淘宝客服工作职责
2014/07/11 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
停电通知范文
2015/04/16 职场文书
开除通知书范本
2015/04/25 职场文书
活动主持人开场白
2015/05/28 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电