示例簡介
python利用百度文字識別功能,實現對上傳的圖片進行掃描,獲取圖片的文字信息,並生成可執行的程序。
開發環境:Windows7+python3.7+pycharm2018.2.4(開發工具);
目錄機構:文件夾“build”、“dist”和文件“discernImg.spec”是生成exe時產生的數據;
最終效果: span>
百度端創建應用
創建過程參考《微信小程序利用百度AI實現掃描身份證獲取信息功能》(把“圖像識別”換為“文字識別”)。
實現過程
一、閱讀器UI設計
1、安裝模塊和配置工具,參考《python實現小說閱讀器》;
2、運行工具QtDesigner,利用QtDesigner工具箱設計出界面效果(所需要的控件可查看右邊區域),保存效果為文件dc.ui;
3、對文件dc .ui執行pyUIC(ui轉化為py代碼),執行完生成文件dc.py。
二、代碼設計
文件“discernImg.py”代碼如下,具體代碼解釋可參考《python智能聯繫人管理》;
Tips:tokenUrl更換為文字識別,詳細可參考
“https://cloud.baidu.com/doc/OCR/s/Sk3h7xyad”;
from PyQt5.QtWidgets import *from PyQt5.QtGui import *# 引入自定義模塊import dc# 引入內置模塊import sysimport os# 引入第三方模塊import requests, base64from PIL import Imageclass parentWindow(QWidget, dc. Ui_Form): # 初始化方法def __init__(self): # 找到父類首頁面super(parentWindow, self).__init__() # 初始化頁面方法self.setupUi(self) # 點擊選擇圖片self.selectImg.clicked.connect( self.openfile) # 點擊查看圖片self.viewImg.clicked.connect(self.viewbtn) # 選擇圖片執行方法def openfile(self): # 啟動選擇文件對話空,查找jpg以及png圖片self.download_path = QFileDialog.getOpenFileName (self, "選擇要識別的圖片", os.getcwd(), "Image Files(*.jpg *.png)") # 判斷是否選擇圖片if not self.download_path[0].strip(): QMessageBox. information(self, '提示信息', '沒有選擇名片圖片') pass else: # pixmap解析圖片pixmap = QPixmap(self.download_path[0]) # 設置圖片self.imgLabel.setPixmap(pixmap) # 讓圖片自適應label大小self.imgLabel.setScaledContents(True) try: # 識別名片圖片返回識別結果content = self.recgImg() except: QMessageBox.information(self, '提示信息', '識別錯誤請重新選擇圖片') # 識別圖片的數據賦值words_result = content['words_result'] # print(words_result) text = '' for item in words_result: for v in item.values(): text = text + '\n' + v self.discernText.setText (text) # 識別名片圖片def recgImg(self): # 獲取baiduToken apikey = '你的apikey' seckey = '你的seckey' tokenUrl = 'https://aip.baidubce.com/oauth/2.0/token?grant_type =client_credentials&client_id=' + apikey + '&client_secret=' + seckey res = requests.get(url=tokenUrl, headers={'content-type': 'application/json; charset=UTF-8'}).json() baiduToken = res['access_token'] ''' 圖片識別(API) ''' request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/webimage" # 二進制方式打開圖片文件f = open (self.download_path[0], 'rb') img = base64.b64encode(f.read()) params = {"image": img} # access_token = '[調用鑑權接口獲取的token]' request_url = request_url + "?access_token=" + baiduToken headers = {'content-type': 'application/x-www-form-urlencoded'} response = requests.post(request_url, data=params, headers=headers) if response: # print (response.json()) return response.json() # 點擊查看圖片顯示大圖功能def viewbtn(self): if self.download_path: # 使用電腦中的看圖工具打開圖片img = Image.open(self. download_path[0]) # 顯示圖片img.show() else: QMessageBox.information(self, '提示信息', '先選擇名片圖片')if __name__ == '__main__': # 每一個PyQt5應用都必須創建一個應用對象app = QApplication(sys.argv) # 初始化頁面window = parentWindow() # 顯示首頁window.show() sys.exit(app.exec_())
三、打包成exe
在項目下執行語句“pyinstaller -F discernImg.py”,打包成功後項目中新增dist文件,exe文件即為打包後的程序。
文章為用戶上傳,僅供非商業瀏覽。發布者:Lomu,轉轉請註明出處: https://www.daogebangong.com/zh-Hant/articles/detail/Python%20implements%20image%20recognition%20text%20program.html
评论列表(196条)
测试