本番運用中文書処理 · AIエージェント · AI評価

ドキュメントの翻訳と作成のための日英バイリンガルAIプラットフォーム

顧客企業向けに構築した日英対応のプラットフォーム。スキャンしたエンジニアリング関連のPDFを編集可能なWord、Excel、画像のファイルに変換し、契約関連書類の下書きも作成します。

約11分で読めます

役割
設計・構築
期間
2025年10月〜現在

ソースコードは非公開ですが、仕組みのご説明やデモのご案内は喜んでいたします。

アーキテクチャ図:ReactのWebアプリケーションがAWS上のFastAPIバックエンドと通信し、バックエンドはページ単位のドキュメント翻訳と、doc-processing-toolkitのエージェントフレームワーク上で動く2つのエージェントを実行する。エージェントのツールはdoc-processing-std-toolsのMCPサーバーを通じて隔離されたe2b環境で動き、利用状況とコストが記録される。
原寸で表示: アーキテクチャ図:ReactのWebアプリケーションがAWS上のFastAPIバックエンドと通信し、バックエンドはページ単位のドキュメント翻訳と、doc-processing-toolkitのエージェントフレームワーク上で動く2つのエージェントを実行する。エージェントのツールはdoc-processing-std-toolsのMCPサーバーを通じて隔離されたe2b環境で動き、利用状況とコストが記録される。
顧客企業のチームが実行したジョブ(2026年3月〜8月)
300+
それらのジョブで処理したページ
7,000+
対応業務の大半におけるチームの生産性向上(私の推定)
4〜5倍
日英バイリンガルのUIとアプリ内マニュアル
EN / JA

使用技術

  • React
  • TypeScript
  • FastAPI
  • Python
  • AWS
  • DynamoDB
  • Docker
  • e2b sandboxes
  • OnlyOffice
  • MCP
  • doc-processing-toolkit
  • doc-processing-std-tools

顧客企業が求めていたこと

顧客企業は日本のコンサルティング会社です。業務の一つとして、日本の建設会社が海外のプロジェクトや、米軍を含む外国の発注者のプロジェクトに入札し、それを遂行するのを支援しています。こうした仕事には日本語と英語の大量のドキュメントが伴い、建設会社にとっては言語の壁もあるため、その多くをこのコンサルティング会社が手伝っています。同社の少人数のチームは、技術マニュアル、仕様書、スプレッドシート、図面などのドキュメントを手作業で翻訳・作成しており、元になる資料はスキャンしたPDFであることが多くありました。さまざまな資料をもとに、契約関連書類も作成していました。

作業を速くしたいという要望がありましたが、譲れない条件がいくつかありました。チームは翻訳を自分たちで修正するため、出力は編集できる状態である必要がありました。翻訳して平坦化したPDFでは、チームの役に立たなかったのです。また、どちらの言語であっても、各ページは引き続きチームの誰かが確認する必要がありました。さらに、顧客企業はジョブごとのコストを請求とコスト追跡に使うため、その金額が見えるようにしておく必要もありました。

チームでの使い方

プラットフォームには、主なワークフローが2つあります。1つ目は翻訳です。ユーザーはPDFをアップロードし、翻訳の方向(既定の日本語→英語、または英語→日本語)を選び、必要に応じて指示を加えてジョブを開始します。1つのジョブに複数のPDFを入れられるので、ページ数に実質的な上限はありません。スキャンしたページは画像として、それを読み取れるAIモデルに渡されるため、別途テキスト認識(OCR)の工程は必要ありません。

プラットフォームは各ページを解析し、必要な出力を判断します。Word文書、Excelスプレッドシート、画像のいずれか、またはその複数です。出力の種類ごとの専門エージェントが、ページをその形式で作り直して翻訳します。ページは、大きさを設定できるバッチ単位で並列に処理できます。バッチを50にすると、50ページのドキュメントも2ページのものとほぼ同じ時間で処理できます。チームが数千ページをこのプラットフォームで処理できたのは、そのためです。

ユーザーの指示は、エージェント自身の判断を補います。スキルも同じです。ここでいうスキルとは、エージェント向けの指示をひとまとめにしたものです。ユーザーはアプリ内でスキルを作成・編集し、ジョブごとに使うスキルを選びます。

次に、ユーザーは左右に並べて表示するビューアーで結果を確認します。左が元のページ、右が翻訳されたWord、Excel、画像の出力です。1つのページに複数の出力がある場合は、それぞれに番号付きのタブがあります。WordとExcelの出力は、プラットフォームに組み込まれたオフィスエディターのOnlyOfficeで開き、複数の人が同時に編集できます。画像は画像エディターで開き、テキストや枠を加えたり、画像を差し替えたりできます。

ユーザーはページを手作業で修正することも、アプリ内の編集エージェントに修正を依頼することもできます。メモを書き込んだスクリーンショットを添付したり、変更したい箇所をページ上でクリックしたりして、意図をエージェントに示せます。データファイルやスキルを渡すこともできます。エージェントは専用の隔離されたクラウド環境で一度に1つの出力を扱い、加えた変更はそれぞれ新しいバージョンになるので、ユーザーは採用するかどうかを選べます。ページの準備ができたら、各出力の形式の編集可能なファイルとして、または翻訳のPDFとしてエクスポートします。PDFは、翻訳だけでも、元のページと並べた形でも出力できます。

Wordの出力。サンプルPDFを英語から日本語に翻訳するジョブを、設定から書き出したWordファイルまで示します。1ページ目は編集可能なWord文書になり、原文の横に表示されます。確認者は一か所を手作業で直したあと、原文のスクリーンショット上で15項を枠で囲み、アプリ内の編集エージェントに15項を表にするよう依頼します。エージェントの修正は新しいバージョンとして返ってきます。確認者はそれを採用してから、ファイルを書き出してWordで開きます。サンプル文書を使用しており、顧客データは含みません。他の顧客のファイルにはぼかしを入れ、エージェントは一般的な名前で表示しています。待ち時間は録画からカットしています。
録画の内容
  1. ジョブを作成します。英語から日本語、モデルとその推論レベル、Fast Modeをオンにし、追加の指示にこのジョブのルールを入力します。
  2. 5ページのサンプルPDFを選び、翻訳を開始します。
  3. ページの処理が終わったら結果を開きます。1ページ目はWordの出力で、原文のページの横に表示されます。
  4. 内蔵のWordエディターで、3項の表にある「less than 0.5 %」を「0.5 %未満」に直して保存します。
  5. アプリ内の編集エージェントを開き、原文のページのスクリーンショットを添付して、15項を枠で囲みます。
  6. 次の依頼を送信します:赤枠で囲んだ「15. 適用法令」を2列の表にしてください。左の列に法令名、右の列に該当内容を入れ、法令ごとに1行としてください。見出し行(左「法令」、右「適用内容」)を追加し、太字で薄いグレーの網掛けをかけてください。訳文の文言は変えないでください。
  7. 15項が表になったエージェントのバージョンを確認し、採用します。
  8. Wordのページを1つのファイルとして書き出し、Wordで開きます。
Excelの出力。同じジョブの2ページ目、セメントの試験成績書が、セルを編集できる日本語のスプレッドシートになります。確認者は内蔵のスプレッドシートエディターでセルを一つ手作業で直し、次にアプリ内の編集エージェントに、数式を使った平均の行を追加するよう依頼して、エージェントのバージョンを採用します。サンプル文書を使用しており、顧客データは含みません。他の顧客のファイルにはぼかしを入れ、エージェントは一般的な名前で表示しています。待ち時間は録画からカットしています。
録画の内容
  1. 2ページ目のセメント試験成績書を、Excelの出力として開きます。
  2. 内蔵のスプレッドシートエディターで、セルH2を「発行日:2026年10月2日」に変えて保存します。
  3. アプリ内の編集エージェントに依頼します:物理試験の表で、試料No. 3 の下に「平均」行を追加してください。数値の列は AVERAGE 関数で平均を求め、小数点以下の桁数は上の値に合わせてください。採取日、凝結時間、安定性のセルは空欄にしてください。
  4. エージェントのバージョンで新しい行を確認し、採用します。
画像の出力。同じジョブの3ページ目、品質監査の証明書が、日本語のテキストを入れた画像として再作成されます。確認者は画像エディターで文字を手作業で加え、次にアプリ内の編集エージェントに、団体名がスタンプに重ならないよう直すことを依頼して、エージェントのバージョンを採用します。サンプル文書を使用しており、顧客データは含みません。他の顧客のファイルにはぼかしを入れ、エージェントは一般的な名前で表示しています。待ち時間は録画からカットしています。
録画の内容
  1. 3ページ目の証明書を、画像の出力として開きます。
  2. 画像エディターで「参考訳」という文字を加えて保存します。
  3. アプリ内の編集エージェントに依頼します:下部の団体名がスタンプに重なっています。2行に折り返してスタンプがすべて見えるようにし、会長名はその下に置いてください。
  4. エージェントのバージョンを確認し、採用します。

2つ目のワークフローは、契約関連書類の作成です。エージェントが、PDF、Office文書、画像が混在する資料から書類の下書きを作成します。作業をToDoリストとして計画し、最大3つのサブエージェントを同時に実行して、Word、Excel、PowerPointのファイル、PDF、テキスト、画像を作成できます。下書きには、ページと行の範囲、シートとセルの範囲、セクションなど、資料内の特定の箇所を示す引用を付けます。下書き作成の画面では、左にエージェントとのチャット、右に下書きが表示されます。引用をクリックすると、出典の資料が下書きの横に開き、引用したページ、行、セル、セクションが強調表示されるので、レビュー担当者は各記述を原文と照らし合わせて確認できます。保存した下書きは、すべてバージョンとして残ります。

下の録画では、エージェントに製品データの提出図書を作成させています。提出図書とは、施工者が、提案する機器が仕様を満たしていることを示すために提出する書類です。エージェントは、2台の給湯器に関する11個のサンプルのソースファイルをもとに作業します。仕様書とその補遺(Addendum)から、現場調査メモまでが含まれます。

11個のファイルのプレビューを並べ、それぞれにファイル名を付けた画像:Section 22 34 00(燃焼式給湯器)の仕様書PDF 4点(うち1点はAddendum No. 01)、SampleHeat HX-500の製品データシート、給湯器の銘板の画像、機器表のスプレッドシート、設計基準のスライドの1枚目、発注者要求事項の文書、現場調査メモ、提出図書登録簿。
下の録画でエージェントに渡している、11個のサンプルのソースファイル(英語)。各ファイルの最初のページだけを示しています。仕様書の施工・性能・保証の各セクションとその補遺(Addendum)、製品データシート、銘板の画像、機器表、設計基準、発注者要求事項、現場調査メモ、提出図書登録簿です。原寸で表示: 11個のファイルのプレビューを並べ、それぞれにファイル名を付けた画像:Section 22 34 00(燃焼式給湯器)の仕様書PDF 4点(うち1点はAddendum No. 01)、SampleHeat HX-500の製品データシート、給湯器の銘板の画像、機器表のスプレッドシート、設計基準のスライドの1枚目、発注者要求事項の文書、現場調査メモ、提出図書登録簿。

このジョブでは、サンプルのスキル、sample-house-styleも使います。このスキルは、提出図書の表紙とセクションの順序、適合性マトリクスの列と判定ラベルを定め、さらに、要件を変更する補遺、要件を満たさない製品、食い違う2つの資料、どの資料でも裏付けられない値の扱い方を定めています。

プラットフォームのスキルエディターでsample-house-styleを開いた画面:logo.pngとSKILL.mdのファイル一覧、説明欄、SKILL.mdのプレビュー(Cover sheet、Required structure、Compliance matrixの見出しと、マトリクスの7つの列名と4つの判定ラベル)。
プラットフォームのスキルエディターで開いたsample-house-styleスキル。指示の冒頭部分だけを示しています。ファイルは、指示を書いたSKILL.mdと、指示で表紙に入れるロゴです。原寸で表示: プラットフォームのスキルエディターでsample-house-styleを開いた画面:logo.pngとSKILL.mdのファイル一覧、説明欄、SKILL.mdのプレビュー(Cover sheet、Required structure、Compliance matrixの見出しと、マトリクスの7つの列名と4つの判定ラベル)。
契約関連書類エージェント。エージェントが、上の11個のソースファイルとスキルをもとに、2台の給湯器の製品データ提出図書を作成します。ソースは英語のままで、計画と提出図書は日本語で作成します。エージェントはまず計画を示し、次にサブエージェントにソースを同時に読ませながらWord文書を作成します。返信には検出した点が並び、Addendum 01に対する熱効率の不足や、2つの資料で回復量の値が食い違う点が含まれます。下書きの引用をクリックすると、その出典が下書きの横に開きます。サンプル文書を使用しており、顧客データは含みません。他の顧客のファイルにはぼかしを入れ、エージェントは一般的な名前で表示しています。待ち時間は録画からカットしています。
録画の内容
  1. 提出図書のジョブを作成し、11個のサンプルのソースが入ったフォルダーを添付して、sample-house-styleスキルを選びます。
  2. まず計画を依頼します:作成に入る前に、添付した資料をすべて読み、給湯器(Section 22 34 00)の製品データ提出図書一式について、Addendum 01 を踏まえた簡潔な計画(アウトライン)を示してください。作成する書類(適合性マトリクスと、必要に応じて逸脱記録・質疑書(RFI)を含む)と、それぞれに盛り込む内容を挙げてください。書類はまだ作成しないでください。計画は日本語で示してください。
  3. 続けて送信します:では、sample-house-style スキルを適用して、製品データ提出図書を Word 文書で作成してください。サブエージェントを並行して使い、仕様書の3つのセクション、Addendum 01、機器表、メーカーのカットシートを同時に読んでください。Addendum 01 が仕様を改訂している箇所は、Addendum 01 を優先して適用してください。提案製品 SampleHeat HX-500 を改訂後の性能要件と照合し、要件ごとに1行の適合性マトリクス(Requirement / Spec Ref / Required / Provided / Source / Status / Notes)を含めてください。あわせて、本体が現場の搬入口を通るかどうかも確認してください。すべての数値に出典を示し、仕様からの逸脱、資料間で値が食い違う箇所、資料で裏付けられない項目は、それぞれ明示してください。提出図書は日本語で作成し、適合性マトリクスの列見出しも日本語(要件/仕様参照/要求値/提案値/出典/判定/備考)にしてください。製品名、型番、規格番号、セクション番号は原文の表記のままで構いません。
  4. Wordの下書きを開き、適合性マトリクスまでスクロールします。
  5. 下書きの出典一覧から、Addendum 01 の引用を下書きの横に開きます。

UIとアプリ内マニュアルは、どちらも英語と日本語に完全対応しています。

プロトタイプから本番へ

2025年10月から2026年2月にかけて、顧客企業の実際の業務フローに沿ってプロトタイプを作りました。その1つが、準備、下書き作成、Webリサーチ、Webコンテンツの要約を担う4つのエージェントによる下書き作成パイプラインです。セクションごとの計画と、メーカーのマニュアルやWebサイトを渡すと、日英バイリンガルの契約関連書類の下書きを作成し、不足している情報には人がレビューできるようフラグを立てました。スキャンした日本語の技術マニュアルについては、3つのアプローチを比較しました。レイアウトを再構築するOCR、翻訳した各ページをクリティック(批評役)エージェントがレビューする画像生成、そしてコード実行を伴うクリエイター/レビュアーのループです。

プロトタイプを通じて、本番の設計に関するいくつかの点が固まりました。すべてのページを同じパイプラインに通すより、ページごとに適切なエージェントへ振り分けるほうがうまくいきました。チームには、編集できる出力が必要でした。また、エージェントの操作には、コスト追跡と、出典までたどれる引用も必要でした。

顧客企業のスタッフは2026年3月に翻訳パイプラインの利用を始め、私は数回にわたるフィードバックを通じてスタッフと密に連携しました。6月4日に編集エージェントを、6月15日に契約関連書類エージェントを追加し、プラットフォームが完成しました。2026年6月から本番運用されています。

構築

プラットフォームの設計と開発を担当し、テスト、デプロイから継続的なサポートまで、顧客企業のチームと協力しています。

WebアプリはReactとTypeScriptで構築し、バックエンドはAWS上のFastAPIです。エージェントは、AIエージェントとマルチエージェントのワークフローのために私が開発したPythonフレームワーク、doc-processing-toolkitの上で動きます。ユーザーは、Anthropic、OpenAI、Google、Fireworksのモデルプロファイルから選べます。

エージェントのツールは、MCPサーバーをまとめた私の別のパッケージ、doc-processing-std-toolsが提供します。MCP (Model Context Protocol) は、AIエージェントがツールを使えるようにするための標準的な方法です。このプラットフォームでは、ツールは隔離されたe2bのクラウドサンドボックスで動き、各エージェントは自分の許可リストにあるツールしか使えません。

ジョブはサーバー上で実行されるため、ユーザーのブラウザーの接続が切れても処理は続き、ほかのユーザーもジョブの状況を確認できます。エージェントの処理はブラウザーにリアルタイムでストリーミングされ、途中でキャンセルすることもできます。ジョブの処理は、ターンが中断されてもジョブが使えない状態にならないように設計しています。

1つのジョブで、複数の人が同時に作業できます。アクセスはジョブ単位で制御しています。共同編集にはDynamoDBのリースとS3のcompare-and-swap書き込みを使い、ほかに誰が作業しているかを表示します。利用状況とコストはページ単位とエージェントのターン単位で記録し、管理者用ダッシュボードで請求とコスト追跡のためにレポートします。

品質の確認方法

すべての出力にはレビューのステータスがあり、レビュー担当者は高評価・低評価とコメントで評価できます。ページを再処理するとそのフィードバックが反映され、エクスポートの前にレビューを必須にすることもできます。

システム全体のレビューも行っています。2026年6月には、56ページのジョブを対象に体系的なレビューを実施しました。AIエージェントのチームが元のページと出力をすべて比較し、問題を原因(モデル、システム、またはその両方)と重大度で分類しました。その結果、ジョブ全体で1つの文書タイトルが5通りに訳されていたことなどが見つかりました。1ページ単位のチェックでは見つけられない、一貫性の問題です。

エージェントが従うハウスルールをまとめたスキルには、専用のリグレッションセットがあります。15件のテスト文書を変更のたびに再実行し、悪化した点がないかを確認するものです。確認は、スクリーンショットの自動比較と人の目で行います。

運用

プラットフォームの運用には、利用するチームとの協働も含まれます。チーム向けのセッションを開き、使い方や、第一印象にとどまらない活用方法を紹介しました。あるとき、チームのメンバーが、特定のExcelファイルのシートを1つコピーして記入する作業を契約関連書類エージェントができるのか、疑問に思っていました。そこで、その作業用のスキルを作り、ファイルを参考資料としてアップロードする方法を示したところ、適切な指示を受けたエージェントはまさにその作業をこなしました。チーム向けのセッションから日々のサポートまで、関係者とのやり取りは日本語と英語の両方で行いました。

リリース後は、本番環境で起きた問題にも対応しました。2026年7月には、障害の原因がファイルディスクリプタの枯渇、つまりサーバーのファイルハンドルが足りなくなったことにあると突き止めました。また、オブジェクトストレージの一覧取得の結果が、20,000オブジェクトを超えると警告なしに切り捨てられていた問題を見つけて修正しました。

コストの記録は顧客企業の請求書に使われるため、プロバイダーの請求額と一致している必要があります。『6倍の乖離』では、両者が一致しなかったジョブと、それを受けて私が変更した点について書いています。

今後の候補としては、音声入力、実行中のエージェントのリアルタイムな軌道修正、プロバイダーに依存しないWeb検索が考えられます。いずれもまだ実装していません。

成果

2026年3月から8月までに、顧客企業のチームは300件以上のジョブを実行し、合計7,000ページ以上を処理しました。この数字には、6月にプラットフォーム全体が稼働する前の、3月〜5月のフィードバック期間も含まれます。

このプラットフォームが対応する業務(翻訳、対話形式での編集、契約関連書類の作成)の大半で、チームの生産性はおよそ4〜5倍になったと私は推定しています。これはあくまで私自身の推定で、正式に測定したものではありません。

学んだこと

スプレッドシート、文章のページ、図面では必要な処理が異なるため、ページごとに扱い方を決めるようにしたことで、後に続く工程がシンプルになりました。出力を編集できるようにしたことで、チームはレビューや修正がしやすくなりました。また、2つの言語で仕事をするには、AIの出力を翻訳するだけでは足りませんでした。UI、マニュアル、サポートのすべてが、英語だけでなく日本語でも機能する必要があったのです。

チームがプラットフォームから得たものは、エージェントの能力と同じくらい、セッションやサポートにも左右されました。上で触れたExcelの例では、スキルと参考ファイルでそれが可能になることを私が示すまで、メンバーはエージェントにその作業ができるとは思っていませんでした。

また、要件を満たす最もシンプルな設計にすることも学びました。翻訳の工程は明確に定まっているので、プラットフォームが手順を決め、エージェントがそれを実行する固定のワークフローとして構築しました。自分で手順を計画し、取りうる行動の幅が大きい自律型のエージェントと比べて、時間とコストを抑えられました。契約関連書類の作成はジョブごとの違いが大きいので、そちらではより自律的なエージェントが適していました。タスクごとにその線引きをどこにするかは、設計上の重要な判断の一つでした。