一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python實戰之實現截圖識別文字

Python實戰之實現截圖識別文字

2022-03-09 11:48佟大帥 Python

本文主要介紹了通過python實現截圖識別圖中文字的功能,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以學習一下

前言

系統:win10

Python版本:python3.8.6

pycharm版本:pycharm 2021.1.2(Professional Edition)

完整代碼下載:Baidu_Ocr.py-Python

Python實戰之實現截圖識別文字

Python實戰之實現截圖識別文字

 

一、獲取百度智能云token

百度智能云 登錄后找到人工智能界面下的文字識別->管理界面創建應用文字識別。

Python實戰之實現截圖識別文字

創建應用完成后記錄下,后臺界面提供的AppID、API key、Secret Key的信息

Python實戰之實現截圖識別文字

接下來根據 官方提供的文檔獲取使用Token

# encoding:utf-8
import requests
# client_id 為官網獲取的AK, client_secret 為官網獲取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=wgEHks0l6MCpalbs3lPuFX1U&client_secret=Z4Rn4ghBx9k06fUYPmSEIRbCFvWFxLyQ'
response = requests.get(host)
if response:
  print(response.json()['access_token'])

 

二、百度借口調用

使用獲取后token調用百度接口對圖片進行識別提取文字

# encoding:utf-8

import requests
import base64
'''
通用文字識別(高精度版)
'''
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
# 二進制方式打開圖片文件
f = open('圖片.png', 'rb')
img = base64.b64encode(f.read())
params = {"image":img}
# 獲取后的Token的調用
access_token = '24.0d99efe8a0454ffd8d620b632c58cccc.2592000.1639986425.282335-24065278'
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
  print (response.json())

獲取后的token為json格式的數據

Python實戰之實現截圖識別文字

此處步驟我們可以看出識別后的文件是以json的格式返回的所以要想達到取出文字的效果就需要對json格式的返回值進行解析

 

三、搭建窗口化的程序以便于使用

實現窗口可視化的第三方類庫是Tkinter。可在終端輸入 pip install tkinter 自行下載安裝

導入tkinter模塊包 構建我們的可視化窗口,要是實現的功能有截圖識別文字,中英文分離,文字識別后自動發送給剪切板

from tkinter import *
# 創建窗口
window = Tk()
# 窗口名稱
window.title('qcc-tnw')
# 設置窗口大小
window.geometry('400x600')
# 窗口標題設置
l=Label(window,text='百度API調用', bg='green', fg='white', font=('Arial', 12), width=30, height=2)
l.pack()
# 設置文本接收框
E1 = Text(window,width='100',height='100')
# 設置操作Button,單擊運行文字識別  "window窗口,text表示按鈕文本,font表示按鈕本文字體,width表示按鈕寬度,height表示按鈕高度,command表示運行的函數"
img_txt = Button(window, text='文字識別', font=('Arial', 10), width=15, height=1)
# 設置操作Button,單擊分割英文
cut_en = Button(window, text='英文分割', font=('Arial', 10), width=15, height=1)
# 設置操作Button,單擊分割中文
cut_cn = Button(window, text='中文分割', font=('Arial', 10), width=15, height=1)
# 參數anchor='nw'表示在窗口的北偏西方向即左上角
img_txt.pack(anchor='nw')
cut_en.pack(anchor='nw')
cut_cn.pack(anchor='nw')
# 使得構建的窗口始終顯示在桌面最上層
window.wm_attributes('-topmost',1)
window.mainloop()

Python實戰之實現截圖識別文字

 

四、實現截圖的自動保存

通過上述對百度接口的解析發現接口是不支持提取剪切板中的文件的

所以通過PIL庫截取的圖片從剪切板保存到本地,在調用百度的接口實現圖片中文字的識別

PIL的安裝 終端輸入 pip install PIL

from PIL import ImageGrab

#取出剪切板的文件保存至本地

image = ImageGrab.grabclipboard()
s= 'xxx.png'
image.save(s)
#百度接口調用
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
f = open(s, 'rb')
img = base64.b64encode(f.read())
params = {"image": img}
access_token = '24.ee0e97cbc00530d449464a563e628b8d.2592000.1640228774.282335-24065278'
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
for i in response.json()['words_result']:
  print(i['words'])

完成后可以使用qq或微信等的截圖功能截圖并運行程序

Python實戰之實現截圖識別文字

 

五、將識別到的文字輸出顯示在窗口文本框中并將文字發送到剪切板

if response:
  for i in response.json()['words_result']:
      # 接受識別后的文本
      E1.insert("insert", i['words'] + '\n')
      E1.pack(side=LEFT)
  # 將識別后的文字寫入剪切板
  pyperclip.copy(E1.get("1.0","end"))

Python實戰之實現截圖識別文字

 

六、提取識別后文字中的中(英)文

此處的判斷相對簡單將 if len(''.join(re.findall(r'[A-Za-z]', i['words'])))<1: 中的‘<'改為‘>'即為中文

E1.delete('1.0','end')
for i in response.json()['words_result']:
#判斷是否存在英文
  if len(''.join(re.findall(r'[A-Za-z]', i['words'])))<1:
      #將識別正則過濾后的文本在文本框中顯示
      E1.insert("insert", i['words'] + '\n')
      E1.pack(side=LEFT)
  #復制到剪切板
  pyperclip.copy(E1.get("1.0", "end"))

最后將方法封裝為函數形式傳遞至我們定義好的窗口按鈕中 

# 設置操作Button,單擊運行文字識別  "window窗口,text表示按鈕文本,font表示按鈕本文字體,width表示按鈕寬度,height表示按鈕高度,command表示運行的函數"
img_txt = Button(window, text='文字識別', font=('Arial', 10), width=15, height=1,command=img_all)
# 設置操作Button,單擊分割英文
cut_en = Button(window, text='英文分割', font=('Arial', 10), width=15, height=1,command=img_en)
# 設置操作Button,單擊分割中文
cut_cn = Button(window, text='中文分割', font=('Arial', 10), width=15, height=1,command=img_cn)
# 參數anchor='nw'表示在窗口的北偏西方向即左上角
img_txt.pack(anchor='nw')
cut_en.pack(anchor='nw')
cut_cn.pack(anchor='nw')
window.wm_attributes('-topmost',1)

以上就是Python實戰之實現截圖識別文字的詳細內容,更多關于Python 截圖識別文字的資料請關注服務器之家其它相關文章!

原文鏈接:https://www.cnblogs.com/t-dashuai/p/15612623.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 2019理论韩国理论中文 | 日韩精选视频 | 免费理伦片在线观看全网站 | 福利片福利一区二区三区 | 久久伊人免费 | 亚洲色图网址 | 国产美女屁股直流白浆视频无遮挡 | 国产真实伦对白在线播放 | 欧美日本一道高清二区三区 | ass日本乱妇ass | 日韩天堂视频 | 甜宠巨肉h文1v1校园 | 欧美灰丝袜丝交nylons | 兽皇videos日本另类 | 奇米狠狠色 | 精品在线播放 | 特黄特级高清免费视频毛片 | 国产成人精品免费视频软件 | 999jjj在线播放 | 香蕉在线播放 | 亚洲性视频在线观看 | 色综合久久98天天综合 | 美女张开大腿让男人桶 | 精品手机在线视频 | 精品一区二区三区免费毛片 | 32d乳白色的奶罩未删除 | 美国艳星lisann成人作品 | 男人的天堂视频 | 天天做天天玩天天爽天天 | 精品国产人成亚洲区 | 国产自产一区c | 69老司机亚洲精品一区 | 日本美女视频韩国视频网站免费 | 久久AV国产麻豆HD真实 | 天堂伊人 | 美女在尿口隐私视频 | 99只有精品 | 亚洲国产成人久久综合一区 | 人人九九| 欧美人体高清在线观看ggogo | 我与肥熟老妇的性事 |