5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

毎月の請求書の処理で失敗したくないからPDFファイルのテキストを自動で転記させる

Last updated at Posted at 2025-07-28

間違えええたくないんですよ

見積書の社名や金額をひたすら手作業で転記する…
そんな単純だけど地味に時間を奪う責任重大な作業はRPAにお任せしようと思います。
今回はPDFの請求書から必要な情報を抽出し、Excelへ自動転記するRPAを作った実例をご紹介します。

1.RPAの概要

利用ツール

Microsoft PowerAutomate Desktop
Excel

完成イメージ

  • 見積書(PDF)に記載されている社名や金額を読み取る
  • Excelファイルに転記
  • 抽出が終わったファイルは別のフォルダに隔離

全体の流れ

  1. 見積書を特定のフォルダに保存
  2. RPAを起動
  3. Excelファイルに抽出した値が転記されていく
  4. 抽出が終わったファイルは別のフォルダに移動される

2.作り方

事前準備

見積書から抽出したい項目を決めます。

  • 社名
  • 書類名
  • 金額
    以上3項目を今回のターゲットにします。
    スクリーンショット (66).png

図のようなExcelファイルを作成します。この表にターゲットとした値が転記されていくイメージです。
スクリーンショット (67).png

RPAの作成

RPAの全体図
スクリーンショット (52).jpg

RPAのソースコード

(上に空行が必要)


Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''転記用エクセルファイルのパス''' Visible: True ReadOnly: False UseMachineLocale: False Instance=> ExcelInstance
Folder.GetFiles Folder: $'''PDFが保存されているフォルダのパス''' FileFilter: $'''*''' IncludeSubfolders: False FailOnAccessDenied: True SortBy1: Folder.SortBy.NoSort SortDescending1: False SortBy2: Folder.SortBy.NoSort SortDescending2: False SortBy3: Folder.SortBy.NoSort SortDescending3: False Files=> Files
LOOP FOREACH CurrentItem IN Files
    Pdf.ExtractTextFromPDF.ExtractText PDFFile: CurrentItem DetectLayout: False ExtractedText=> ExtractedPDFText
    Text.SplitText.Split Text: ExtractedPDFText StandardDelimiter: Text.StandardDelimiter.NewLine DelimiterTimes: 1 Result=> TextList
    Text.Replace Text: TextList[0] TextToFind: $'''%' '%''' IsRegEx: False IgnoreCase: False ReplaceWith: $'''%''%''' ActivateEscapeSequences: False Result=> syorui
    Text.Replace Text: TextList[18] TextToFind: $'''%' '%''' IsRegEx: False IgnoreCase: False ReplaceWith: $'''%''%''' ActivateEscapeSequences: False Result=> kingaku
    Text.Replace Text: TextList[14] TextToFind: $'''%' '%''' IsRegEx: False IgnoreCase: False ReplaceWith: $'''%''%''' ActivateEscapeSequences: False Result=> namae
    Text.CropText.CropTextAfterFlag Text: kingaku FromFlag: $'''¥''' IgnoreCase: False CroppedText=> 金額 IsFlagFound=> IsFlagFound
    Excel.GetFirstFreeColumnRow Instance: ExcelInstance FirstFreeColumn=> FirstFreeColumn FirstFreeRow=> FirstFreeRow
    Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: syorui Column: $'''B''' Row: FirstFreeRow
    Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: 金額 Column: $'''C''' Row: FirstFreeRow
    Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: namae Column: $'''A''' Row: FirstFreeRow
END
Excel.SaveExcel.Save Instance: ExcelInstance
Excel.CloseExcel.Close Instance: ExcelInstance
File.Move Files: Files Destination: $'''抽出が終わったPDFファイルの避難先のパス''' IfFileExists: File.IfExists.DoNothing MovedFiles=> MovedFiles

こんな感じで動きます
スクリーンショット (52)2.JPG

今回は抽出したい見積書を入れるフォルダを「見積書」
抽出した値を転記するExcelファイルを「test」
抽出が終わったファイルを保存するフォルダを「完了」としています。

1.転記するExcelファイルの起動、PDFファイルを読み込む

1 (1).jpg

2-1.PDFの文章を行ごとに区切り、抽出したい文字列を指定

「ExtractedPDFText」にPDFのテキストが格納されているのでExcelで使用できるように分割していきます。分割した後「TextList」に格納されます。
2.jpg

テキストの置換について

「TextList」の中身は以下のように番号とテキストがセットになって格納されてます。
転記したい番号を探して%TextList[0]%のように[]の中に番号を入力します。

スクリーンショット (65).png

2-2. 転記先のExcelファイルの空欄に値を書き込む

3.jpg

2-3.Excelファイルを保存して閉じ、抽出が完了したファイルを別フォルダに移動

スクリーンショット (63).png

3.完成

2025-07-26133325-ezgif.com-crop.gif

PDFファイルの〇行目の値をExcelファイルに転記する動きのため取引先毎に設定を行う必要がありますけど一応完成です。
あとは転記されたExcelファイルを基に社内の申請書類に利用できるかなと思います。

4.実際に使ってもらった

「時間を奪う転記作業と偉い人たちに見られる申請書作成の負担軽減になりますか」と事務担当の人にRPAを動かしながら聞いたところ
こんな感じの感想をもらいました。

  • すべての取引先に対応できればいいのに
  • 申請書への転記もやってほしい
  • 手作業が減るのはありがたい
    使えなくはないが、伸びしろはまだまだあるとのご意見をいただきました。
    様々な形式の書類に対応して抽出ができるようになること
    PDFからの抽出だけでなく申請書類の作成まで自動化できるようにすることが課題になります。

あとがき

抽出方法については正規表現ってヤツを利用することで柔軟にPDFファイル内のテキスト検索ができるようなのですが、正規表現が難しく断念
申請書類作成は運用面でカバーしています。申請書類のひな型がWordを利用していることが多いのでWordの「差し込み印刷機能」を使うことで効率化を図っています。

ここまで読んでいただきありがとうございました。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?