見出し画像

PDFからデータ引っこ抜こうぜ!手書き、お前もな!!

みなさま、ご機嫌いかがでしょうか?
自分のご機嫌は自分でとる、No ご機嫌 No Lifeです。

前回はPower Appsネタを書きました。
Power Appsに限らず、エンジニアでなくても出来ることがどんどん増えてきていますね。
新しく覚えることは沢山ありますが、ChatGPTさんもいらっしゃいますし、気楽に新しことにチャレンジしましょう!

今回はPDFからデータを抜き取ってみます。
紙を撲滅して手作業も減らしていこうぜ、がいいですよね。

伝票関係はなんだかんだ手作業が多い

例えば請求書。
デジタル化や電帳法の影響もあってか、PDFでもらうことも多くなっていますよね。
確かにPDFはデータですが、その後の処理は手作業が多くないでしょうか?
発注内容と合っているかチェックして、会社によってはそれを添付してワークフローを回したり(ここで内容や金額を手で転記したり)、その後に経理システムに手で入力したり…データなんだからデジタルで完結したいですよね!

で、そんなときはRPAの出番!
RPAはパソコン内のロボに仕事させるものですよね。
RPAは判断や意思決定は苦手ですが、定型作業は得意ですので、先の例は結構自動化できます。

でも、その中でも一番ネックになりそうなのが「PDFからデータを抽出する」ことですよね。
今回はそこに絞ってみてみます!

ついでに、RPA「Power Automate Desktop」(以後、PAD)を使ってみます。
※PADの詳細な情報はございません、ごめんなさい。

PDFからデータを抽出するパターンは3つ

今回試すものはコチラ!

  1. テキスト情報があるPDFからデータを抽出

  2. テキスト情報がないPDFからOCRでデータを抽出

  3. 手書きPDFからAIのチカラをかりてデータを抽出

シナリオ

今回の3パターンを試すにあたり、こんなことをしてみます。

  • 顧客アンケートを実施

  • 顧客からアンケート結果を受領。これがパターンにより異なる

    • パターン1:PDFで受領(テキスト情報あり)

    • パターン2:PDFで受領(テキスト情報なし)

    • パターン3:紙で受領(自分でスキャンしてPDF化)

  • アンケート結果をRPAで読み込み、Excelに書き出す

こんなアンケート結果PDFを
こんな感じでエクセルに自動で入力する

パターン1.テキスト情報があるPDFの場合

これが一番楽ちんなパターン。
PDFを読み込めばデータが取得できちゃう。
ちなみに、ExcelやWordからPDF出力すると標準でテキスト情報が含まれます。

PADの全体像はこちら。

PADはやりたいこと=「アクション」を選んでポチポチとマウスやキーボードで設定。
ざっくりこんな流れ。

  1. PDFからテキストのかたまりを抽出して

  2. テキストを行ごとに分割して

  3. 行から情報を取り出して

  4. Excel開いて

  5. 空いている行(最終行)を探して

  6. Excelにデータを書き込む

1つ目の「PDFからテキストを抽出」アクションをすると、次のようにデータが取得できます。

テキスト入ってます

テキストが取得できれば勝ったも同然!
あとはこれをちょちょいのちょいっとやって、Excelに書き込むだけ。

実際に動いている動画を用意していませんが…こんな感じでちゃんと動きます。

ちゃんと書き込まれている

パターン2.テキスト情報がないPDFの場合

次はテキスト情報を持たないPDFの場合。
たとえば、請求書を紙で受け取り、それを自前でスキャンした場合などですね。

PADの全体像はこちら。

ざっくりこんな流れ。
パターン1と似てます。

  1. PDFを開いて

  2. 位置を指定して画像からテキストを抽出して

  3. Excel開いて

  4. 空いている行(最終行)を探して

  5. Excelにデータを書き込む

パターン1と違うのが「OCRを使ってテキストを抽出」アクションです。
これは、目印となる場所を指定しておいて、そこから相対位置で文字を探し出してOCRする流れ。

ちなみにOCR=「Optical Character Recognition」、光学的文字認識といって、画像から文字をパターン認識している感じです。

設定値はこんな感じです。
個別に設定しようとすると大変なので、PADの「レコーダー」という機能を使ってやるとらくちんです。
ちなみに、「Windows OCR エンジン」を使うと、日本語を指定して簡単に読み込めます。
もうひとつの「Tesseract エンジン」でも日本語が可能ですが、設定が必要です。

画像の「Q.1」を頼りに文字を探す

これを実行すると、こんな感じで変数にセットされます。

ちゃーんと読めてる

もちろん、ちゃんとExcelに書き込める。

決してパターン1と同じ画像ではない

パターン3.手書きPDFの場合

使うぜ、Azure「Document Intelligence」!!

そして最後、手書き。
手書きはPADを使わずに、AI-OCRを使います。

MicrosoftのAzureで提供されるAI関連サービスの一つ、「Docunent Intelligence」。
一般的に「AI-OCR」と呼ばれるもの。
どんなことに使うのかというと、紙で受け取った請求書などを読み込んでAIに分析してもらい、そこに書かれているデータを抽出できます。

今回はこれを使っていきます。

Document Intelligenceの画面

こんな感じの画面です。
学習データを最低5件読み込ませまして、そこから文字を認識させて、その文字が何なのか「ラベル」(カラフルな色がついているもの)をつけることによって文字認識します。

きたねぇ字でも呼んでくれる神

これは学習時の画面ですが、右側にちゃんと日本語で認識された文字が表示されていますね。
よしよし。

今回はPAD使わない

すみません、使いません。
今回はMicrosoftの事例に則ってAzureの「Logic Apps」を使って構築していきます。

雑に言うと、Logic Appsで「PDF読み込んでAIで文字認識させてExcelに書き込む」を、PADを使わずに実装します。

Logic Appsの画面はこちら。

Power Automate(Desktopじゃない版)みたい

今回はクラウドで全完結。
流れは次の通り。

  1. Logic AppsがOneDriveの特定フォルダを監視

  2. 特定フォルダにPDFを入れる

  3. Logic AppsがPDFをDocument Intelligenceに渡す

  4. Document Intelligenceが結果を返す

  5. Logic AppsがExcelに書き込む

動かしてみる

まず、特定フォルダ(OneDrive)にファイルを入れる

PDFじゃなくてJpegだった…けどまぁいいか

そして、ちょっと待つ。
1件当たり数秒程度?

そして、Excelを開くと…

出来てる出来てる

それっぽい!!
けど、所々残念!

途中で改行やスペースが入っていますね。
「し」が「レ」になっていたり…

まぁ、難しいことをしないでもこんな感じでとれるのって、すごくないです!?

結構大変だった…&まとめ

3パターン、いかがでしたでしょうか?
PADを使うパターンは比較的らくちんでしたが、AzureのAIを使うパターンはつまづくことが多くてちょっと大変でした…けど楽しかった!

PDFからデータを抽出するのは難易度が高い感じがしますが、実はAIを使わずとも結構なことができることがわかりました。
まずはパターン1or2から始めてみませんか!

あと、今回のパターン3は実際に運用するにはAzure AIを使うための費用が掛かりますので、それも踏まえてどのパターンを採用するか決めなければですね。
ちなみに、費用は紙1枚当たり数円程度でしょうか。(ストレージ利用料も掛かるし違ったらごめんなさい、実際に使う前に試算を!!)

今回はDocument IntelligenceとLogic Appsの詳細は端折りましたが、気が向いたらnoteに書いてみます。

参考 PADのはじめ方

いいなと思ったら応援しよう!