利用百度文字識別API識別圖像中的文字

  本文將會介紹如何使用百度AI開放平臺中的文字識別服務來識別圖片中的文字。百度AI開放平臺的訪問網址爲:http://ai.baidu.com/ ,爲了可以使用該平臺提供的AI服務,你須要事先註冊一個百度帳號。python

建立百度AI文字識別應用

  在百度AI開放平臺中,登陸本身的百度帳號,點擊「文字識別」服務中的「通用場景文字識別」,選擇「建立應用」,填好應用名稱,選擇應用類型,填好應用描述,這樣就建立好了「通用場景文字識別」服務,以下圖:web

  在應用列表中,可以看到本身剛剛建立好的文字識別服務了,記住,這個應用中的「AppID」,「API Key」,「Secret Key」很重要,是你這個應用的惟一識別。算法

OK,建立好這個應用後,咱們就能使用該應用來識別圖片中的文字了~json

利用建立的應用來識別圖片中的文字

  接下來,咱們將使用剛剛建立好的文字識別應用來識別圖片中的文字,大體的步驟以下:api

  • 獲取該應用的access_token;
  • 利用access_token來建立HTTP請求;
  • 解析請求成功後的json文件,獲取識別後的結果。

具體的參考文檔能夠參考網址:https://ai.baidu.com/docs#/OCR-API/top, 本文將再也不具體講述。bash

  咱們須要識別的圖片爲含有兩個漢字的圖片驗證碼,圖片名稱爲test.png,以下:微信

  參考該應用的官方文檔說明,咱們寫下以下的Python腳本,便可識別圖片中的文字,完整的代碼以下:app

import json
import requests
import base64
import urllib.parse

APP_ID = '你的APP_ID'
API_KEY ='你的API_KEY'
SECRECT_KEY = '你的SECRECT_KEY'

# 獲取token
url = 'https://aip.baidubce.com/oauth/2.0/token'
body = {'grant_type': 'client_credentials',
        'client_id': API_KEY,
        'client_secret': SECRECT_KEY
        }

req = requests.post(url=url, data=body)
token = json.loads(req.content)['access_token']

# 獲取百度api識別結果
ocr_url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=%s'%token
headers = {'Content-Type': 'application/x-www-form-urlencoded'}

# 讀取圖片並進行base64加密
body = base64.b64encode(open('./test.png' ,'rb').read())
# 進行urlencode
data = urllib.parse.urlencode({'image': body})

# post請求
r = requests.post(url=ocr_url, headers=headers, data=data)

# 輸出請求結果
print('請求碼爲: %s' %r.status_code)
res_words = json.loads(r.content)['words_result'][0]['words']
print('識別結果爲: %s' % res_words)

輸出的結果以下:post

請求碼爲: 200
識別結果爲: 高吸

能夠看到,對於這張圖片,百度的文字識別功能很好地識別出了圖片中的文字。學習

利用Python的百度文字識別第三方模塊來識別圖片中的文字

  上面咱們參照了百度文字識別的官方文檔來實現文字識別功能,但過程有點複雜,須要先獲取access_token,再構建HTTP請求才能使用。幸運的是,在Python的第三庫中,已經有了能實現該功能的第三方模塊,即baidu-aip,安裝方式以下:

pip install baidu-aip

  利用這個第三方模塊,咱們能簡潔快速地實現文字識別功能,示例的Python代碼以下:

# 利用aip進行識別
from aip import AipOcr

APP_ID = '你的APP_ID'
API_KEY ='你的API_KEY'
SECRECT_KEY = '你的SECRECT_KEY'
client = AipOcr(APP_ID, API_KEY, SECRECT_KEY)

img = open('./test.png','rb').read()
message=client.basicGeneral(img)
res = message['words_result']
print('識別結果爲: %s' % res[0]['words'])

總結

  本文並無講述如何從AI模型來識別圖片中的文字,而是利用百度AI平臺中的文字識別服務來完成文字識別任務。看上去並無什麼新意,只是講解使用使用API來識別圖片中的文字罷了。
  那麼,本文的意義在哪?其實,在使用模型識別文字前,一個很重要的過程便於標註,標註費時費力,這時候咱們藉助第三方文字識別API可以減輕標註的工做量,讓咱們的標註量能減小點。
  固然,若是你把這篇文章看做是一個學習如何利用百度文字識別API識別圖像中的文字的機會,那也何嘗不可!

注意:本人現已開通微信公衆號: Python爬蟲與算法(微信號爲:easy_web_scrape), 歡迎你們關注哦~~

相關文章
相關標籤/搜索