はじめに
はじめまして、NTT東日本のけんさんと申します。
デジタル革新本部 デジタルデザイン部で、普段は社内で利用するアプリケーションの開発(ローコード・スクラッチ)をやっています。
直近、開発を担当しているアプリで「画像から文字データを抽出する機能を追加したい」との要望をいただいた際にWorkatoのIDP機能を検証していたところ、公式ドキュメントには対応言語の記載がある一方、通貨の扱いについては特に記載が見当たらないことに気づきました。
そこで本記事では、WorkatoのIDP機能が通貨を読み取れるか検証した結果について共有します。同じようにIDP by Workatoを導入して様々な通貨を判定する方法を検討している方の参考になれば幸いです。
記事の概要
- IDP by Workatoの公式ドキュメント(2026年10月現在)には通貨に関する記述がないため、Process documentアクションのカスタムスキーマに通貨コードの抽出欄(ISO 4217に準拠)を自作して検証した
- 検証の結果、公式対応言語(英・中・日・韓)だけでなく、言及のない非対応言語(ドイツ語・フランス語・ベトナム語・タイ語・インドネシア語)の請求書でも、その国の通貨を判定できることを確認した
- 本記事の検証対象は「通貨の判定」のみです。小計・税額・合計といった金額の抽出精度は扱いません
今回の検証結果は架空のデータ・統一したレイアウトという限定的な条件で得られたものです。
本番導入前は、実際に扱う書式での事前検証を強くおすすめします。
背景
IDP by Workato は、公式ドキュメントで請求書・領収書について「英語・中国語・日本語・韓国語」の4言語に対応していると明記されています。
一方で、通貨に関する記述はコネクター概要ページ・Process documentアクションページのどちらにもなく、出力フィールド例(invoice_number, total_amount, tax_amount, subtotalなど)にも「currency」に相当する項目自体が存在しません。
つまり、実際に通貨を読み取れるのかは公式情報からは分かりません。
既存の検証記事を見ても、基本的な使い方の紹介や、カスタムフィールドの設定手順、誤認識対策とConfidence Scoreの一般論を扱ったものが多く、言語・通貨別に出力を検証した記事は見当たりませんでした。
請求書や領収書など金額が重要な書類のIDP処理を運用する場合、「対応言語に日本語が入っているから円は理解できるだろう」で終わらせず、実際に多言語・多通貨の書類でどこまで正確に読めるのかを事前に把握しておきたいところです。
特に、海外拠点とのやりとりが発生するケースであれば、円建てだけでなくドルやユーロなど、現地通貨建ての請求書を扱う機会も少なくないかと思います。
そこで、本記事では、公式ドキュメントに書かれていないIDPによる「通貨の判定」に焦点を当て、様々な言語・通貨(9言語・8通貨)の請求書を正しく認識できるか検証した結果を共有します。
前提知識
IDPとは
IDP(Intelligent Document Processing)は、請求書や領収書、契約書といった非定型の書類から、AI(OCR+自然言語処理)を使って必要な項目を自動的に抽出する技術・機能の総称です。従来のOCRとの違いを整理すると以下の通りです。
| 項目 | 従来のOCR | IDP |
|---|---|---|
| 読み取り方 | 決まった位置のテキストをそのまま文字起こし | 書式が少々ばらついていても、項目の意味を理解して抽出 |
| 出力形式 | 単なる文字列(テキストの塊) | 日付・金額・取引先名など、意味づけされた構造化データ |
| 得意な書類 | レイアウトが固定された定型帳票 | 請求書・領収書・契約書など、レイアウトがばらつく非定型の書類 |
単に文字を読み取るだけの従来のOCRに対して、IDPは文字情報を後工程で使いやすいよう知的に構造化する点が大きな違いです。
IDP by Workatoとは
IDP by Workatoは、iPaaS(複数のSaaS・システムを連携させるプラットフォーム)であるWorkatoが提供するIDP機能です。内部ではLLM(大規模言語モデル)が活用されており、文書の分類や情報の抽出を行うことができます。
レシピ(ワークフロー)に組み込めるアクションとして、書類がどの種類(請求書、レシートなど)に該当するかを判定する「Classify a document」と、指定した書類の種類に応じてあらかじめ定義されたフィールド(請求書番号・金額・取引先名など)を自動抽出する「Process document」の2つが用意されています。
「Process document」では今回の検証で使用しているように、デフォルトで用意されていない項目をカスタムフィールドとして自分で追加し、抽出させることができます。
検証方法
検証に使った請求書
全言語共通のレイアウトで作成した架空の請求書を使用しました。
検証対象の言語には公式対応言語(英・中・日・韓)に加え、非対応言語(ドイツ語・フランス語・ベトナム語・タイ語・インドネシア語)の合計9言語を選定しました。
各言語の請求書の表記内容は人力で作成した日本語版をベースにAIを使って翻訳したものを記載しています。
また、各請求書では品目を共通に設定し、通貨記号・桁区切り・税の表記(VAT/消費税)は各国の慣習に合わせています。
各言語の本来の通貨と金額の表記例は以下の通りです。
| 言語 | 公式対応 | 通貨 | 金額の表記例 |
|---|---|---|---|
| 英語 | ○ | USD | $1,234.56 |
| 中国語 | ○ | CNY | ¥1,234.56 |
| 日本語 | ○ | JPY | ¥1,234 |
| 韓国語 | ○ | KRW | 1,234원 |
| ドイツ語 | × | EUR | 1.234,56 € |
| フランス語 | × | EUR | 1 234,56 € |
| ベトナム語 | × | VND | 1.234.567 đ |
| タイ語 | × | THB | 1,234.56 บาท |
| インドネシア語 | × | IDR | Rp1.234.567 |
ファイル形式によって結果が変化するか検証するためにPDFとPNGの2形式をそれぞれの言語ごとに作成し、検証は合計 9言語 × 2形式 = 18ファイル分実施しました。
なお、今回の検証では書式を全パターンで統一している分、「言語・通貨表記の違い」に絞った比較をする一方で、その他多様なレイアウト(スマホのカメラで撮影された請求書、1ファイルに複数の請求書が含まれるもの)でも同様の結果が出るかは別途確認が必要な点に注意してください。
通貨の判定方法
通貨の記号や現地表記をそのまま出力させると、正解/不正解の判定方法が曖昧になります。
そこで、今回はProcess documentアクションのカスタムスキーマに、いわゆる通貨コード(ISO 4217)の3文字を(JPY, USD, CNYなど)出力させるフィールドを自作で追加しました。
記号や現地表記ではなくISOコードに統一しておくことで、「JPYなら正解」「CNYなら不正解」と機械的に判定できます。フィールドの具体的な定義や設定画面は「手順」セクションで紹介します。
手順
レシピ構成
今回検証に使ったレシピはシンプルな2ステップで構成されています。
| ステップ | 内容 |
|---|---|
| 1. トリガー | Workato FileStorage内の新規ファイル(リアルタイム) |
| 2. アクション | Process a document using IDP by Workato |
Process documentアクションの設定値は以下の通りです。
| 設定項目 | 値 |
|---|---|
| File contents | ステップ1(トリガー)の File contents |
| File name | ステップ1(トリガー)の File name |
| IDP version | v4 (Jun 2026) |
| Document type | Invoices |
| Fields to identify | Invoicesのデフォルトフィールド一式 + カスタム追加した currency_code
|
IDP versionは執筆時点(2026年10月)で選択できた最新版(v4)を使用しています。WorkatoのIDP versionは定期的に更新されるため、追検証される際は今回検証に使用したバージョンを使用できない場合があります。
Fields to identifyへの通貨コード(カスタムフィールド)追加
「Fields to identify」の設定画面で、Invoicesのデフォルトフィールド一式に加えて、以下の内容で通貨コードを出力させるカスタムフィールドを追加します。
{
"description": "ISO 4217 currency code (e.g. JPY, USD, EUR) inferred from the invoice's currency symbol, code, or local notation and context. Output the 3-letter ISO code only, not the raw symbol or local text.",
"label": "Currency code",
"type": "string",
"name": "currency_code",
"optional": true
}
実行結果の取得
レシピを保存・実行すると、Process documentの出力として、valuesとconfidence_scoresの2つのオブジェクトを含むJSONが返ります。values.currency_codeに、推論された通貨コードが入ります。
Confidence Score(信頼スコア)は、IDPが抽出した各項目の値がどの程度確からしいかを0〜1で示す値であり、1に近いほど確度が高いことを表します。
{
"values": { "...": "...", "currency_code": "JPY", "...": "..." },
"confidence_scores": { "...": "...", "currency_code": 1, "...": "..." }
}
検証結果
通貨コードの判定結果
| 言語 | 通貨 | PNG(信頼スコア) | PDF(信頼スコア) |
|---|---|---|---|
| 英語 | USD | ○(0.9999) | ○(0.9999) |
| 中国語 | CNY | ○(1) | ○(1) |
| 日本語 | JPY | ○(1) | ○(0.9999) |
| 韓国語 | KRW | ○(0.9999) | ○(1) |
| ドイツ語 | EUR | ○(1) | ○(0.9999) |
| フランス語 | EUR | ○(0.9999) | ○(0.9999) |
| ベトナム語 | VND | ○(0.9999) | ○(0.9999) |
| タイ語 | THB | ○(1) | ○(0.9999) |
| インドネシア語 | IDR | ○(1) | ○(0.9999) |
検証結果: 全件正解
対応が明言されている4言語(英・中・日・韓)だけでなく、非対応言語(ドイツ語・フランス語・ベトナム語・タイ語・インドネシア語)も含めて全パターンで信頼スコアも高く正解するという結果となりました。
考察:なぜ通貨を正しく判定できたのか
公式対応言語だけでなく非対応言語も含めて通貨コードが全件正解だった背景は断定できないものの2点あると考えています。
-
請求書は通貨を推測する手がかりが多い文書である
金額表記だけでなく、VATや消費税といった税の表記、住所の国名など、通貨を絞り込むための周辺情報が請求書には多分に含まれます。
通貨を表現する記号($や¥)だけでは判別できなくても、文書全体の文脈からは高い精度で推測できる余地が大きかったと考えられます。
今回は言語と通貨が対応しているケースを中心に検証しましたが、英語で記載された円建ての請求書など、文書の言語と通貨が一致しないケースでも正しく通貨を取得できるかは、今後検証していきたいポイントです。 -
文字認識(OCR)自体は言語非依存で行われている可能性がある
公式対応言語は英・中・日・韓の4言語ですが、非対応言語でも通貨を正しく読み取れたことから、少なくとも文字の抽出自体は特定言語に強く依存する処理ではない可能性があります。
また、抽出後の意味解釈(通貨の分類など)に利用されているであろうLLMも対応言語以外の知識をある程度有しており、言語を問わず機能している可能性があります。
いずれも実装の内部までは分からないため推測の域を出ませんが、公式ドキュメントに書かれていないからといって、非対応言語の情報が全く扱えない訳ではないというヒントと解釈することができそうです。
まとめ
本記事では、IDP by Workatoの公式ドキュメントに通貨の記述がないことを受け、通貨を出力する項目を追加して9言語・8通貨の架空請求書を計18パターンで検証しました。
その結果、公式対応言語・非対応言語を問わず通貨の読み取りに全件で成功しました。
今回は言語と通貨を対象に検証しましたが、公式ドキュメントに記載のない項目でも、カスタムスキーマを調整すれば読み取れる場合があるため、気になる項目があれば同じ手法で試してみる価値がありそうです。
なお、再三にはなりますが、公式に記載のない言語・用途での利用は、サポート対象外となる可能性があります。利用は自己責任でご判断ください。
この記事が似たような検証をされる方の助けとなれば幸いです。
※ 記載されている会社名、製品名、サービス名は、各社の商標または登録商標です。
※ 本記事の内容は個人の見解であり、所属組織の公式見解ではありません。


