文字提取效率工具開發(fā)案例
個(gè)人開發(fā)者小樂崇尚高效便捷的生活方式灼捂,業(yè)余生活中熱愛閱讀挂洛,在閱讀的過程中吹埠,他希望能快速的將有價(jià)值的內(nèi)容保存下來斩郎,方便日后回顧整理脑融,但市面上已有的文字轉(zhuǎn)寫工具識(shí)別準(zhǔn)確率低且價(jià)格昂貴,無法滿足需求缩宜。
因此肘迎,小樂決心自己開發(fā)一個(gè)專注于高精度OCR識(shí)別的效率工具,識(shí)別的準(zhǔn)確率及速度是決定產(chǎn)品可用性的關(guān)鍵因素锻煌。通過對(duì)比不同平臺(tái)的OCR識(shí)別產(chǎn)品妓布,小樂最終決定基于百度OCR通用文字識(shí)別能力進(jìn)行開發(fā)。在滿足自己日常需求的同時(shí)宋梧,將這款產(chǎn)品提供給更多有需求的用戶使用匣沼,解決紙質(zhì)文件電子化存檔、檢索捂龄、紙質(zhì)書摘錄等多種場(chǎng)景下無法快速提取圖片內(nèi)文字內(nèi)容的問題释涛,使文字信息的提取變得無比輕松。
下面看看如何使用百度AI開放平臺(tái)的文字識(shí)別能力快速構(gòu)建一個(gè)準(zhǔn)確高效的文字識(shí)別工具
實(shí)現(xiàn)步驟
只需三步倦沧,1小時(shí)內(nèi)即可完成文字識(shí)別接口的調(diào)用唇撬。
Step1:成為百度AI開放平臺(tái)的開發(fā)者
要調(diào)用百度AI開放平臺(tái)的文字識(shí)別能力先要成為百度AI開放平臺(tái)的開發(fā)者,首先讓我們花5分鐘來注冊(cè)百度AI開放平臺(tái)的開發(fā)者展融,并新建一個(gè)文字識(shí)別應(yīng)用窖认。
先點(diǎn)擊此處注冊(cè)百度賬戶進(jìn)入 如下圖 的頁(yè)面快速的建立一個(gè)百度賬號(hào)吧。
我們有賬號(hào)之后登錄告希,并且點(diǎn)擊此處創(chuàng)建一個(gè)應(yīng)用扑浸,如下圖
然后就能看到創(chuàng)建完的應(yīng)用和 API KEY 以及 Secret KEY了
Step2:準(zhǔn)備數(shù)據(jù)
文字識(shí)別服務(wù)可以讓小樂把自己拍攝的含有文字的圖片轉(zhuǎn)化成文本數(shù)據(jù),然后就可以對(duì)文字進(jìn)行編輯等操作暂雹,我們看下小樂拍攝的書籍某頁(yè)的圖片
書籍頁(yè)面圖片:
Step3: 編寫一個(gè)示例程序
有 第一步 的 API KEY 以及 Secret KEY首装,以及 第二步 的數(shù)據(jù),我們就可以寫一個(gè)示例代碼調(diào)用百度AI開放平臺(tái)的文字識(shí)別能力
準(zhǔn)備開發(fā)環(huán)境
我們選擇用 Python來快速搭建一個(gè)原型杭跪,關(guān)于如何安裝python仙逻〕巯牛可以參考下表列出的不同操作系統(tǒng)的安裝方法進(jìn)行安裝。
Python的官方下載地址:下載Python
Windows 快速測(cè)試包
Windows平臺(tái)的用戶如果對(duì)上述的python安裝感到困難系奉,可以下載我們的一鍵測(cè)試包檬贰,下載地址:Windows測(cè)試包。
解壓zip文件后缺亮,雙擊run.bat即可測(cè)試翁涤。
編寫代碼
新建一個(gè) main.py
粘貼以下內(nèi)容,不要忘記替換你的 API_KEY 以及 SECRET_KEY:
# coding=utf-8
import sys
import json
import base64
# 保證兼容python2以及python3
IS_PY3 = sys.version_info.major == 3
if IS_PY3:
from urllib.request import urlopen
from urllib.request import Request
from urllib.error import URLError
from urllib.parse import urlencode
from urllib.parse import quote_plus
else:
import urllib2
from urllib import quote_plus
from urllib2 import urlopen
from urllib2 import Request
from urllib2 import URLError
from urllib import urlencode
# 防止https證書校驗(yàn)不正確
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
API_KEY = 'GmhC18eVP1Fo1ECX911dtOzw'
SECRET_KEY = 'PQ2ukO4Aec2PTsgQU9UkiEKYciavlZk8'
OCR_URL = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
""" TOKEN start """
TOKEN_URL = 'https://aip.baidubce.com/oauth/2.0/token'
"""
獲取token
"""
def fetch_token():
params = {'grant_type': 'client_credentials',
'client_id': API_KEY,
'client_secret': SECRET_KEY}
post_data = urlencode(params)
if (IS_PY3):
post_data = post_data.encode('utf-8')
req = Request(TOKEN_URL, post_data)
try:
f = urlopen(req, timeout=5)
result_str = f.read()
except URLError as err:
print(err)
if (IS_PY3):
result_str = result_str.decode()
result = json.loads(result_str)
if ('access_token' in result.keys() and 'scope' in result.keys()):
if not 'brain_all_scope' in result['scope'].split(' '):
print ('please ensure has check the ability')
exit()
return result['access_token']
else:
print ('please overwrite the correct API_KEY and SECRET_KEY')
exit()
"""
讀取文件
"""
def read_file(image_path):
f = None
try:
f = open(image_path, 'rb')
return f.read()
except:
print('read image file fail')
return None
finally:
if f:
f.close()
"""
調(diào)用遠(yuǎn)程服務(wù)
"""
def request(url, data):
req = Request(url, data.encode('utf-8'))
has_error = False
try:
f = urlopen(req)
result_str = f.read()
if (IS_PY3):
result_str = result_str.decode()
return result_str
except URLError as err:
print(err)
if __name__ == '__main__':
# 獲取access token
token = fetch_token()
# 拼接通用文字識(shí)別高精度url
image_url = OCR_URL + "?access_token=" + token
text = ""
# 讀取書籍頁(yè)面圖片
file_content = read_file('./text.jpg')
# 調(diào)用文字識(shí)別服務(wù)
result = request(image_url, urlencode({'image': base64.b64encode(file_content)}))
# 解析返回結(jié)果
result_json = json.loads(result)
for words_result in result_json["words_result"]:
text = text + words_result["words"]
# 打印文字
print(text)
運(yùn)行代碼
在命令行中運(yùn)行python main.py
結(jié)果
代碼正確運(yùn)行后萌踱,命令行界面上會(huì)顯示出如下運(yùn)行結(jié)果:
中午,胡小懶跟公司的同事去附近的餐館吃飯,附近所有的餐館都人滿為患,往往需要等位,午餐時(shí)間至少需要45分鐘吃完午飯回來,趴在桌子上睡個(gè)午覺,午睡醒來后,胡小懶往往覺得這一天才真正開始葵礼。通常,胡小懶要用至少半個(gè)小時(shí)的時(shí)間才能從午睡狀態(tài)中清醒過來,再處理一些瑣事,下午就這么過去了。如果部門開會(huì),時(shí)間就在領(lǐng)導(dǎo)的演講和大家低頭玩手機(jī)中度過了并鸵。上良下班后吃點(diǎn)東西,坐地鐵回到家,已經(jīng)八點(diǎn)左右了鸳粉。他雖然白天在公司沒做什么事情,但下班回家后仍然覺得十分累,除了窩在床上看美劇之外,別的什么也不想做。胡小懶臨睡前看著亂糟糟的房間,眉頭一皺,但心里卻樂觀地期待著周末的到來,想著周末一定要大干一場(chǎng),讓整個(gè)房間煥然一新园担〗焯福可周末到了,就真的能夠像他自己期待的那樣嗎?,個(gè)胡小懶的周末通常是這樣過的:宅在家里隨便找部美劇或者網(wǎng)絡(luò)小說打發(fā)時(shí)間,覺得日子過得很愜意。朋友邀請(qǐng)過他很多次,想周末一起吃個(gè)飯,但胡小懶都以“下次吧”敷衍了過去弯汰。因?yàn)樗X得,好好一個(gè)周末,還需要像平時(shí)一樣穿得周周正正地出門,還得坐車去到約好的地點(diǎn),真是太煩人了艰山。不個(gè)一就這樣,與胡小懶聯(lián)系的朋友越來越少,而他自己根本就沒有意識(shí)到。后宮不共像胡小懶這樣看似每天都有事做,實(shí)際上卻是一直在混日子的上班族并不少見咏闪。而他們中的很多人并不覺得自己是在混日子,只是懷才不遇曙搬。一5窗人靠中愛因斯坦在解釋相對(duì)論時(shí)曾說過一個(gè)著名的比喻:“一個(gè)男人與美女對(duì)坐1小時(shí),會(huì)覺得似乎只過了1分鐘;但如果讓他坐在熱火爐上1
返回的數(shù)據(jù)包含了圖片中所有文字,詳細(xì)的接口返回可以查看文檔 文字識(shí)別API文檔
了解更多
示例源代碼
您可以在我們的官方github上下載示例源碼
https://github.com/Baidu-AIP/QuickStart/tree/master/OCR
產(chǎn)品特色
- 產(chǎn)品豐富: 提供 33 款專用文字識(shí)別產(chǎn)品 + 2 款自定義模板文字識(shí)別產(chǎn)品汤踏,全方位滿足各場(chǎng)景識(shí)別需求织鲸;
- 準(zhǔn)確率高: 提供多場(chǎng)景、多語種溪胶、高精度的整圖文字檢測(cè)和識(shí)別服務(wù),準(zhǔn)確率可達(dá)99%稳诚,多項(xiàng)ICDAR指標(biāo)居世界第一
- 價(jià)格實(shí)惠: 各個(gè)接口均提供免費(fèi)調(diào)用量哗脖,超出后方進(jìn)行計(jì)費(fèi),階梯計(jì)費(fèi)價(jià)格最低可達(dá) 0.002 元/次扳还,同時(shí)提供 QPS計(jì)費(fèi)才避、次數(shù)包等多種計(jì)費(fèi)方式可供選擇
- 服務(wù)穩(wěn)定: 依托百度云技術(shù)實(shí)力,提供高可靠性氨距、彈性可伸縮桑逝、高并發(fā)承載的文字識(shí)別服務(wù),服務(wù)可用性高達(dá)99.99%