はじめに
健康診断データは受診した病院によってフォーマットが異なり、OCRで自動化する際に大きな課題になります。位置情報ベースの単純なOCRでは対応しきれないケースも多いです。
そこで今回はGoogle Cloud Document AIにあるCustom Extractorプロセッサを試してみました。これは、AIをベースとしたOCRの上に自分でカスタマイズした項目を追加できる仕組みです。
この記事では、実際に行った手順を備忘録的にまとめています。
流れ
- DocumentAIのプロセッサをカスタマイズ&ビルド
- 読み取り対象帳簿をCloud Strageに格納
- BigQueryとDocumentAI・Cloud Strageの連携
- BigQuery内のクエリを用いた帳簿読み取り~結果格納
DocumentAIのプロセッサをカスタマイズ&ビルド
①コンソール画面からDocumentAIを選択
Google Cloud Console にログインし、Document AI を選択します。
②Custom Extractor プロセッサを作成
- 「カスタムプロセッサ > Custom Extractor > プロセッサを作成」をクリック
- プロセッサ名、リージョン、ストレージの場所、暗号化方式を設定
- リージョンは現在 US / EU のみ
- 特にこだわりがなければ「Google 管理のストレージ・暗号化」で問題なし
③作成したプロセッサを選択
マイプロセッサ一覧から、先ほど作成したプロセッサを開きます。
④カスタマイズの開始
「概要」タブからカスタマイズの開始をクリックし、読み取りたい項目(フィールド)を作成します。
作成時の設定項目は以下の通り:
- 名前:ラベル名(英語のみ)
- データ型:数値、文字列、日付など
- オカレンス:対象が何回登場するか(1回だけ / 複数回)
⑤学習用ドキュメントをアップロード
「ビルド > ドキュメントのインポート」から学習用データを投入します。
アップロード時に用途を選べますが、今回は「トレーニング」を選びました。

⑥ラベル付け
アップロードしたドキュメントに対し、項目ごとにラベル付けを行います。
- 自動ラベル付けされた箇所は紫色で表示
- 間違っていたら修正
- 認識されなかった場合は手動で範囲選択してラベルと紐づけ可能
⑥プロセッサ調整完了
ラベル付けと学習が終わると、プロセッサが利用可能になります。
読み取り対象帳簿をCloud Strageに格納
DocumentAI で読み込む対象は GCS にアップロードしておきます。
①Cloud Storage バケットを作成
この設定は基本的に何でも良いと思いますが、念のためDocumentAIのプロセッサと同じリージョンにしました。
②Document AIで読み取りたい書類のアップロードを行う
OCR 対象のPDFや画像をバケットにアップロードします。
BigQueryとDocumentAI・Cloud Strageの連携
[1]を参考にしながら下記の手順で接続を行いました。
詳細については、参考に載せているリンク先を確認してください。
BigQueryとDocumentAIを連携する
①コンソール画面からBigQueryを選択
②BigQueryのエクスプローラーの3点ボタン>追加を選択
③「外部データソースへの接続」をクリック
この時は下記のように設定しました。
- 接続タイプ:Vertex AI リモートモデル、リモート関数、BigLake(Cloud リソース)
- 接続ID
- ロケーションタイプ:マルチリージョン、US(DocumentAI構築時に指定したリージョン)
④BigQueryのエクスプローラーから、プロジェクトIDが表示される項目の▽ボタンを押して展開
⑤外部接続から、作成したコネクションを選択して開く
リージョン名.接続IDで表示されています。
⑥サービスアカウントIDをコピーする
⑦IAMに移動して、「アクセスを許可」をクリック
⑧下記を設定して保存をクリック
- 新しいプリンシパル:コピーしたサービスアカウントID
- ロール:DocumentAI 閲覧者、Storage オブジェクト閲覧者
BigQueryとCloud Strageを連携する
こちらも同様に「外部データソースへの接続」を使って設定します。
- 接続タイプに Cloud Storage を選択
- アクセス権限を設定
これで BigQuery から GCS 上のファイルを参照できます。
BigQueryクエリで帳簿読み取り~結果格納
ここまで設定できれば、あとは BigQuery 上でクエリを実行することで:
- GCSに置いたPDF/画像をDocumentAIでOCR処理
- 結果をJSONとしてBigQueryに格納
- SQLで抽出・集計
といった流れが可能になります。
まとめ
- DocumentAI Custom Extractor を使うと、病院ごとに形式が異なる健康診断票でも柔軟にOCR可能
- GCSとBigQueryを組み合わせることで、クラウドネイティブな帳簿処理パイプラインが構築できる
