一篇文章搞定百度OCR圖片文字識別API
研究百度OCR的API,主要是向做對掃描版的各種PDF進行文字識別並轉Word文件的需求。
這裡用Postman客戶端進行測試和演示。因為Postman是對各種API操作的最佳入門方式。一旦在Postman裡實現了正確的呼叫,剩下的就只是一鍵生成程式碼,和一些細節的修改了。
授權字串 Access Token
Token字串
永遠是你使用別人API的第一步,簡單說,就是隻有你自己知道的密碼,在你每次向伺服器傳送的請求裡面加上這個字串,就相當於完成了一次登入。
如果沒有Token授權認證,API的訪問可能會像瀏覽網頁一樣簡單。
Access Token
一般是呼叫API最重要也最麻煩的地方了:每個公司都不一樣,各種設定安全問題讓你的Token複雜化。而百度雲的Token,真的是麻煩到一定地步了。
參考:百度API的鑑權認證機制 (建議你不要參考,因為它的流程圖會先把你鎮住的)
簡單說,獲取百度雲token字串的主要流程就是:
- 建立一個應用,獲得只有自己知道的id和密碼
- 用POST方式把id和密碼發給百度的一個連結:
https://aip.baidubce.com/oauth/2.0/token
-
其中,需要你向這個地址傳送三個引數:
-
grant_type = client_credentials
這個是固定的 -
client_id = xxx
這個是你在百度雲管理後臺建立OCR應用的時候,那個應用的API Key
-
client_secret = xxx
這個是你的應用的Secret Key
-
- 等待伺服器返還給你一個包含token字串的資料
- 記住這個token字串,並用來訪問每一次的API
來看看怎麼利用Postman操作,如下圖所示:
填好以後點選Send傳送,就會獲得一個JSON資料,如下圖:
然後你用你的程式(Python, PHP, Node.js等,隨便),獲取這個JSON中的 access_token
,
即可用到正式的API請求中,做為授權認證。
正式呼叫API: 以"通用文字識別"為例
API連結: https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic
提交方式: POST
呼叫方式有兩種:
- 方式一:直接在URL填寫資訊
直接把API所需的認證資訊放在URL裡是最簡單最方便的。
- ~方式二:Headers填寫資訊方式~
建議忽略這種方式,需要填寫很多request的標準headers,太麻煩。
Headers設定:
-
Content-Type = application/x-www-form-urlencoded
只要填這一項就夠了。
Body資料傳送的各項引數:
-
access_token = xxx
把之前獲取到的token字串填到這裡來 -
image = xxx
把圖片轉成base64字串填到這裡,不需要開頭的data:image/png;base64,
-
url = xxx
也可以不用傳圖片而是傳一個圖片的連結。 但是百年無效,不要用! -
language_type = CHN_ENG
識別語言型別。預設中英。
Body的資料如圖所示:
然後就可以點Send傳送請求了。
成功後,可以得到百度雲返回的一個JSON資料,類似下圖:
返回的是一行一行的識別字符。百度雲的識別率是相當高的,幾乎100%吧。畢竟是國內本土的機器訓練出來的。
API常用地址
以下是百度雲的OCR常用API地址,每個API所需的引數都差不多,略有不同。所有的API和地址以及詳細所需的引數,參考官方文件,很簡單。一個弄明白了就其他的都明白了。
API | 請求地址 | 呼叫量限制 |
---|---|---|
通用文字識別 | https://aip.baidubce.com/rest... | 50000次/天免費 |
通用文字識別(含位置資訊版) | https://aip.baidubce.com/rest... | 500次/天免費 |
通用文字識別(高精度版) | https://aip.baidubce.com/rest... | 500次/天免費 |
通用文字識別(高精度含位置版) | https://aip.baidubce.com/rest... | 50次/天免費 |
網路圖片文字識別 | https://aip.baidubce.com/rest... | 500次/天免費 |