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 相关文章推荐
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
Oct 22 Python
使用python对excle和json互相转换的示例
Oct 23 Python
Python 多维List创建的问题小结
Jan 18 Python
python中logging模块的一些简单用法的使用
Feb 22 Python
pandas 层次化索引的实现方法
Jul 06 Python
Django中的cookie和session
Aug 27 Python
Python: 传递列表副本方式
Dec 19 Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 Python
python如何实现DES加密
Sep 21 Python
python按照list中字典的某key去重的示例代码
Oct 13 Python
Django项目如何正确配置日志(logging)
Apr 29 Python
Python中glob库实现文件名的匹配
Jun 18 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
德生PL660的电路分析和打磨
2021/03/02 无线电
PHP+JS+rsa数据加密传输实现代码
2011/03/23 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
php生成年月日下载列表的方法
2015/04/24 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
laravel orm 关联条件查询代码
2019/10/21 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
JavaScript脚本性能的优化方法
2007/02/02 Javascript
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
Jquery中"$(document).ready(function(){ })"函数的使用详解
2013/12/30 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
基于python实现从尾到头打印链表
2019/11/02 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
区域销售经理岗位职责
2013/12/10 职场文书
医院办公室主任职责
2013/12/29 职场文书
庆祝教师节标语
2014/10/09 职场文书
立项申请报告范本
2015/05/15 职场文书
统招统分证明
2015/06/23 职场文书
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js