API を抽出¶
Odoo は invoices 、bank statements 、expenses 、reviews のドキュメントの処理を自動化するサービスを提供しています。
サービスは OCR エンジンを使用してドキュメントをスキャンし、 :abbr:`AI(人工知能)`ベースのアルゴリズムを使用して、合計などの関心のあるフィールドを抽出します。 締切日 *invoices*の請求書、最初および最終残高、*銀行明細*の日付の請求書行 *経費*の合計日付、または*再開*の名前、電子メール、電話番号。
このサービスは有料サービスです。各ドキュメント処理には、ドキュメントのデジタル化|IAP| アカウントからクレジットが1つかかります。 IAP アカウントの詳細は、 :doc:`ここ </applications/essentials/in_app_purchase> ` を見つけることができます。
本サービスは、経理、経費、募集アプリまたはAPI経由で直接ご利用いただけます。 抽出APIは、次のセクションで詳述されています。あなた自身のプロジェクトに直接当社のサービスを統合することができます。
概要¶
抽出 API は JSON-RPC2 プロトコルを使用します。エンドポイント ルートは https://extract.api.odoo.com
にあります。
バージョン¶
Extract APIのバージョンはルートで指定されています。
- 最新バージョン:
請求書:123
銀行取引明細: 100
費用:132
応募者:102
フロー¶
フローはドキュメントの種類ごとに同じです。
- ドキュメントを送信するには、 /parse <extract_api/parse>`を呼び出します。成功すると、応答に `document_token を受け取ります。
すべての HTTP POST メソッドを使用する必要があります。 請求書の完全なフローのPython実装は、 ここ
で見つけることができ、 :ref:`統合テストセクション <latestextract_api/integration_testing> ` に統合テストのトークンが提供されています。
Parse¶
ドキュメントのデジタル化をリクエストします。ルートはリクエストの結果を取得するために使用できる document_token
を返します。
ルート¶
/api/extract/invoice/2/parse
/api/extract/bank_statement/1/parse
/api/extract/expense/2/parse
/api/extract/applicant/2/parse
リクエスト¶
jsonrpc
(required)See JSON-RPC2
method
(必須)See JSON-RPC2
id
(必須)See JSON-RPC2
params
account_token
(必須)クレジットが請求される :doc:`IAP </applications/essentials/in_app_purchase>`アカウントのトークン。通話に成功するたびに1クレジットが必要です。
version
(必須)バージョンは、リクエストの形式とサーバーレスポンスの形式を決定します。 :ref:`最新バージョン <extract_api/version> ` を使用してください。
documents
(必須)ドキュメントは ASCII エンコーディングの Base64 文字列として提供する必要があります。リストには 1 つのドキュメントのみを含める必要があります。 このフィールドは、従来の理由でのみリストです。サポートされているフォーマットは pdf、png および jpg です。
dbuuid
(任意)Odoo データベースの一意の識別子
webhook_url
(任意)webhook URL を提供することができます。空の POST リクエストは
webhook_url/document_token
に送信されます。user_infos
(任意)ドキュメントを抽出サービスに送信する人に関する情報。クライアントまたはサプライヤーにすることができます (
perpective
に依存します)。 サービスが機能するためにこの情報は必要ありませんが、結果の品質を大幅に向上させます。user_company_vat
(任意)ユーザーの付加価値税(VAT)番号
user_company_name
(任意)ユーザーの会社名です。
user_company_country_code
(任意)ユーザの国コード。フォーマット: ISO3166 alpha-2
user_lang
(任意)ユーザーの言語。フォーマット: language_code + _ + locale (例: fr_FR, en_US)。
user_email
(任意)ユーザーのメールアドレス
purchase_order_regex
(任意)指定されていない場合は、Odoo PO 形式のデフォルトになります。
perpective
(任意)client
またはsupplier
にすることができます。このフィールドは請求書のみに使用できます。client
は、提供されたユーザー情報が請求書のクライアントに関連していることを意味します。supplier
はサプライヤーに関連していることを意味します。指定されていない場合は、クライアントが使用されます。
{
"jsonrpc": "2.0",
"method": "call",
"params": {
"account_token": string,
"version": int,
"documents": [string],
"dbuuid": string,
"webhook_url": string,
"user_infos": {
"user_company_vat": string,
"user_company_name": string,
"user_company_country_code": string,
"user_lang": string,
"user_email": string,
"purchase_order_regex": string,
"perspective": string,
},
},
"id": string,
}
注釈
user_infos
パラメータはオプションですが、特に請求書では結果の品質が大幅に向上します。より多くの情報を提供できるようになります。
回答¶
jsonrpc
See JSON-RPC2
id
See JSON-RPC2
結果
status
リクエストのステータスを示すコードです。下の表を参照してください。
status_msg
リクエストのステータスについて詳細な詳細を表す文字列。
document_token
リクエストが成功した場合にのみプレゼントします。
状態 |
status_msg |
---|---|
|
成功 |
|
対応していないバージョン |
|
エラーが発生 |
|
クレジットが足りません。 |
|
サポートされていないファイル形式 |
|
サーバーは現在メンテナンス中です。後でもう一度お試しください。 |
{
"jsonrpc": "2.0",
"id": string,
"result": {
"status": string,
"status_msg": string,
"document_token": string,
}
}
注釈
APIは実際にJSON-RPCエラースキームを使用しません。APIはJSON-RPCの正常な結果にバンドルされた独自のエラースキームを持っています。
結果を取得する¶
ルート¶
/api/extract/invoice/2/get_result
/api/extract/bank_statement/1/get_result
/api/extract/expense/2/get_result
/api/extract/applicant/2/get_result
リクエスト¶
jsonrpc
(required)See JSON-RPC2
method
(必須)See JSON-RPC2
id
(必須)See JSON-RPC2
params
version
(必須)バージョンは /parse リクエストに渡されたバージョンと一致する必要があります。
document_token
(必須)解析状態を取得する
document_token
。account_token
(必須)ドキュメントの送信に使用された IAP アカウントのトークン。
{
"jsonrpc": "2.0",
"method": "call",
"params": {
"version": int,
"document_token": int,
"account_token": string,
},
"id": string,
}
回答¶
解析結果を取得すると、検出されたフィールドはドキュメントの種類によって大きく異なります。 各レスポンスは、各ドキュメントごとに1つずつの辞書のリストです。 辞書のキーはフィールドの名前で、値はフィールドの値です。
jsonrpc
See JSON-RPC2
id
See JSON-RPC2
結果
status
リクエストのステータスを示すコードです。下の表を参照してください。
status_msg
リクエストのステータスについて詳細な詳細を表す文字列。
results
リクエストが成功した場合にのみプレゼントします。
full_text_annotation
ドキュメントの OCR から処理されていない完全な結果が含まれています。
状態 |
status_msg |
---|---|
|
成功 |
|
対応していないバージョン |
|
エラーが発生 |
|
サーバーは現在メンテナンス中です。後でもう一度お試しください。 |
|
ドキュメントが見つかりませんでした |
|
ドキュメントが小さすぎるため却下されました |
|
PDFファイルのページ数を取得できません |
|
PDFを画像に変換できませんでした |
|
PDFファイルはパスワードで保護されています |
|
ドキュメントにページが多すぎます |
{
"jsonrpc": "2.0",
"id": string,
"result": {
"status": string,
"status_msg": string,
"results": [
{
"full_text_annotation": string,
"feature_1_name": feature_1_result,
"feature_2_name": feature_2_result,
...
},
...
]
}
}
一般的なフィールド¶
feature_result
¶
合計や期日などのドキュメントから抽出したい各フィールドは**features**とも呼ばれます。 以下のセクションでは、ドキュメントの種類に関連付けられて抽出されたすべての機能の網羅的なリストを見つけることができます。
各機能について、候補者のリストを返し、私たちのモデルがこの機能に最適であると予測している候補者にスポットライトを当てます。
selected_value
(任意)この機能の最良の候補。
selected_values
(任意)この機能の最高の候補。
candidates
(任意)信頼度スコアを減少させることにより、この機能のすべての候補のリスト。
"feature_name": {
"selected_value": candidate_12,
"candidates": [candidate_12, candidate_3, candidate_4, ...]
}
候補¶
各候補者について、ドキュメント内の表示と位置を与えます。候補者は適合性の順序を減らすことによってソートされます。
content
候補者の表現。
coords
[center_x, center_y, width, rotation_angle]
. 位置と寸法は、ページのサイズに対して相対的であり、したがって0から1の間です。 角度は時計回りの回転で度単位で測定されます。page
候補者が配置されている元のドキュメントのページ(0から始まります)。
"candidate": [
{
"content": string|float,
"coords": [float, float, float, float, float],
"page": int
},
...
]
請求書¶
請求書は複雑で、多くの異なる分野を持つことができます。 以下の表は、請求書から抽出できるすべてのフィールドの網羅的なリストを示しています。
機能名 |
仕様 |
---|---|
|
検出されたSWIFTコード(または`BIC <https://www.iso9362.org/isobic/overview.html>`_)に関する情報を含んでいます。 キー:
verified_bic が真の場合にのみ、名前と都市が存在します。 |
|
|
|
|
|
user_infosのパースペクティブの値に応じて、これはサプライヤーまたはクライアントのVAT番号になります。 perspectiveがクライアントの場合、サプライヤーのVAT番号になります。サプライヤーの場合は、クライアントのVAT番号です。 |
|
|
|
|
|
|
|
|
|
|
|
書式 : YYYY-MM-DD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
invoice_lines
機能¶
各辞書が請求書行を表す辞書のリストとして返されます。
"invoice_lines": [
{
"description": string,
"quantity": float,
"subtotal": float,
"total": float,
"taxes": list[float],
"total": float,
"unit_price": float
},
...
]
銀行明細書¶
次の表は、バンクステートメントから抽出されたすべてのフィールドのリストです。
機能名 |
仕様 |
---|---|
|
|
|
|
|
|
bank_statement_lines
機能¶
辞書のリストとして返されます。辞書は、各辞書が銀行明細行を表しています。
"bank_statement_lines": [
{
"amount": float,
"description": string,
"date": string,
},
...
]
費用¶
経費は請求書よりも複雑ではありません。次の表は、経費レポートから抽出できるすべての分野の網羅的なリストです。
機能名 |
仕様 |
---|---|
|
|
|
|
|
|
|
|
|
|
申請者¶
この3つ目のタイプのドキュメントは、履歴書の処理を目的としています。 次の表は、履歴書から抽出できるすべてのフィールドの網羅的なリストを示しています。
機能名 |
仕様 |
---|---|
|
|
|
|
|
|
|
|
統合テスト¶
/parse <extract_api/parse>`リクエストで *integration_token* を ``account_token` として使用することで、統合をテストできます。
このトークンを使用すると、テストモードになり、ドキュメントを実際に解析することなくフロー全体をシミュレートでき、**ドキュメント**の解析に成功するたびにクレジットが1つ請求されることはありません。
テストモードでの唯一の技術的な違いは、送信するドキュメントがシステムによってパースされていないことと、 :ref:`/get_result <extract_api/get_result>`から取得したレスポンスがハードコードされていることです。
請求書のフルフローのPython実装は、 :download:`here <extract_api/implementation.py> `にあります。