當前位置:成語大全網 - 漢語詞典 - python如何調用Google的analyzeentities api

python如何調用Google的analyzeentities api

介紹

我們每個人都會在某種程度上使用名片。但如果名片數量多,管理起來就很麻煩。所以我想出了這篇文章的案例來管理它們。

這裏我先用手機拍下每張名片的照片,按照以下流程處理:

將獲得的名片圖像提供給我們的應用程序,並提取姓名、公司名稱和地址等信息。這裏我用的是Google Vision API和自然語言)API,因為這兩個API很好用,性能也不錯。

我用Python寫我的應用程序調用Google Vision API和自然語言API。

創建步驟

第0步:準備

第壹個?步驟1:用谷歌視覺API識別文本

第壹個?第二步:使用自然語言API提取姓名、公司名稱和地址信息。

第壹個?第三步:整合第1步和第二步。

準備

在開始編寫應用程序之前,我們需要安裝必要的類庫,下載配置並設置API的鍵值。從這個鏈接,妳可以設置谷歌API鍵。

安裝類庫

執行命令行來安裝類庫。

$ pip安裝請求

$ pip安裝pyyaml

下載存儲庫

我提前在這裏準備了資源庫。妳也可以從下面的鏈接下載。

下載

設置API密鑰

將Google API密鑰寫入配置文件(plugins/config/google.yaml)。

首先打開google.yaml,用妳的API鍵替換xxx。

令牌:xxx

步驟1用谷歌視覺API識別文本。

Vision API簡介

依靠強大的機器學習模型,谷歌?視覺API?允許您編寫自己的圖像識別應用程序。視覺API具有以下功能:

形象分類(如快艇、獅子、埃菲爾鐵塔等。)

人臉識別

文本識別

符號識別

地標識別

安全搜索識別

Vision API每月有1000個免費請求。

寫劇本

這裏我們編寫Python腳本來使用Vision API。將以下代碼另存為plugins/API/vision . py?這裏我們將使用UTF 8編碼。

# -*-編碼:utf-8 -*-

導入base64

導入請求

def detect_text(image_file,access_token=None):

使用open(image_file,' rb ')作為圖像:

base64 _ image = base64 . b 64 encode(image . read())。解碼()

URL = ' hogleapis . com/v 1/images:annotate?key={} '。格式(訪問令牌)

header = { ' Content-Type ':' application/JSON ' }

body = {

請求':[{

圖像':{

' content': base64_image,

},

功能':[{

鍵入':' TEXT_DETECTION ',

' maxResults': 1,

}]

}]

}

response = requests.post(url,headers=header,json=body)。json()

text = response[' responses '][0][' text annotations '][0][' description ']if len(response[' responses '][0])& gt;0否則''

返回文本

輸入圖像文件路徑和API密鑰detect_text?函數,我們可以得到圖像文件中的文本信息。

運行腳本

首先,將腳本文件移入?插件/測試?文件夾中已經有壹個test_vision.py?文件。在test_vision.py中,寫壹個調用detect_text?功能的測試用例。如果運行正常,我們可以得到圖像中的文本信息。

以下面的名片example_en.png作為輸入運行腳本。

$ python test _ vision . py data/example _ en . png

輸出結果

約翰·史密斯。

膠囊公司

217-767-8187

伊利諾伊州埃爾文春天街1332號

第二步:使用自然語言API提取姓名、公司名稱和地址信息。

自然語言API簡介

自然語言API?以REST API的形式提供了強大的機器學習模型來識別文本結構及其含義。自然語言API具有以下功能:

實體標識(如個人姓名、組織名稱、事件信息等。)

語義分析(產品評論、客戶意見等中的情感。)

語法分析

Vision API每月有5000個免費請求。

運行腳本

類似地,我們編寫壹個Python腳本來調用自然語言API。將腳本保存為plugins/API/language . py,註意UTF-8編碼。

# -*-編碼:utf-8 -*-

導入請求

def extract_entities(text,access _ token =無):

URL = ' htoogleapis . com/v 1 beta 1/documents:analyze entities?key={} '。格式(訪問令牌)

header = { ' Content-Type ':' application/JSON ' }

body = {

"文檔":{

" type ":"純文本",

《語》:“恩”,

【內容】:文字

},

" encodingType": "UTF8 "

}

response = requests.post(url,headers=header,json=body)。json()

返回響應

def extract _ required _ entities(text,access _ token =無):

entities = extract_entities(文本,訪問令牌)

required _ entities = { ' ORGANIZATION ':' ',' PERSON ':' ',' LOCATION': ''}

對於實體['實體']中的實體:

t =實體['類型']

如果t在required_entities中:

required_entities[t] +=實體['name']

返回必填_實體

將文本數據和API鍵作為參數傳入?提取_實體?功能,可以提取不同的實體信息。我們需要的是。公司名稱,?個人姓名,?位置信息?。提取_必需_實體?函數用來過濾掉這些需要的內容。

運行腳本

同樣,把腳本文件移到插件/測試中?文件夾我們會看到壹個test_language.py?文件。在test_language.py中,寫壹個調用?提取_必需_實體?功能的測試用例。

這裏我使用準備好的example_en.txt文本文件作為輸入來運行腳本。文本文件example_en.txt包含上壹步的輸出結果。

$ python test _ language . py data/example . txt

輸出結果

{ ' LOCATION ':' Spring Street Elwin Illinois ',' PERSON': 'John Smith ',' ORGANIZATION ':' Capsule Corporation ' }

步驟3整合步驟1和步驟2 i

最後,我們將編寫另壹個腳本來集成Vision API和自然語言API。

寫劇本

寫壹個腳本,集成Vision API和自然語言API。另存為?插件/API/integration . py .這裏我們將使用UTF 8編碼。

# -*-編碼:utf-8 -*-

從。語言導入提取_必需_實體

從。視覺導入檢測_text

def extract _ entities _ from _ img(img _ path,access_token):

text = detect_text(img_path,access_token)

entities = extract _ required _ entities(文本,訪問令牌)

返回實體

通過輸入圖像文件路徑和API密鑰作為參數?extract_entities_from_img?,可以從名片圖像中提取上述信息數據。

運行腳本

首先,將腳本文件移動到插件/測試中?文件夾中已經有壹個test_integration.py文件。在test_integration.py中寫壹個對extract_entities_from_img的調用?努力考。?

使用圖像文件example_en.png作為輸入數據運行腳本。

$ python test _ integration . py data/example _ en . png

輸出結果

{ ' LOCATION ':' Spring Street Elwin Illinois ',' PERSON': 'John Smith ',' ORGANIZATION ':' Capsule Corporation ' }

結論

上面我們使用Google Vision API和自然語言API編寫了壹個簡單的應用程序來提取名片信息。但是,這只是壹個簡單的原型,我會在後面進行改進,使其更加完善。