PDFのテキスト化された表データをExcelに転記したい

トライアル初心者です。
添付ファイルのようなPDFファイルにあるテキスト化された表データをExcelに転記したいのですが、
実現方法を教えてください。
もっと狭くいうと、合計金額だけを取得してExcelに貼り付けるだけなのですが、、
あらゆる方法で試している内、混乱してしまいました。
もっともベストな方法からベターな方法まで伝授ください。
宜しくお願いします。
※尚、StudioXでは実現できそうになかったのでStudioに切り替えて実践中です。

こんにちは

まずは以下の2つ方法の両方またはいずれかを検討いただくのが良いように思えます。

1.Read PDF Textアクティビティで、全体を文字列として取得
その文字列を文字列操作で必要な部分だけを抜き取り、処理する。

2.Document Understandingのフレームワークを用いて、情報を抽出する。
以下はOCRの例ですが、Characterデータとしてある文字列も読み込めます。

Read PDF Textアクティビティで、全体を文字列として取得できました。
ただ、この元の切り出し前の文字個数が非常に多く、個数自体も固定ではなく変動します。

文字列の必要な部分としては、画面ショットの例でいうと、
"合 計 832,198"の中の数字の部分のみなのですが。

左から文字を切り出すvb.netのStrings.Left(string Str,int Length)を使うのは、
切り出し前の文字個数が少なく、
固定されている時に使うのが適切だと思うので、ここでは使えそうにありません。

この場合の文字列操作としては有効なものは何でしょうか。

追伸:
Document Understandingのフレームワークを用いて情報を抽出する方法もありがとうございます!
勉強します。一案で実現不可の場合に二案で試してみることにします!

@UedaKorai - 以下の正規表現を使用してみてください

Sorry, if the translation is bad (need to blame google :wink:)

こんにちは

基本的には @prasath17 が示したアプローチになりますが、今回のケースはOCRの結果単語の間に空白があるようなので、以下のような式が良いと思います。

System.Text.RegularExpressions.Regex.Match(s,"(?<=合\s*計\s*)[\d,]+").Value

prasath17様、Yoichi様、ご丁寧にありがとうございます。
試してみましたが、根本的なところの理解が追い付いていないのかいまいちわかりません。。
長文のテキストデータを"変更前データ"として入力し、
取り出した文字列(合計の数字)を"変更後データ"として取得したいのですが、
それをメッセージボックスなどで明示しましたが、正しく取得できていません。
画面ショットを添付しましたが、
正規表現ビルダーの設定以外にプロパティの設定や変数の型など、何か間違いがおわかりでしたらご助言ください。

こんにちは

 System.Text.RegularExpressions.Regex.Match(s,"(?<=合\s*計\s*)[\d,]+").Value

を使う場合は、代入アクティビティで

 変更後データ = System.Text.RegularExpressions.Regex.Match(s,"(?<=合\s*計\s*)[\d,]+").Value

のようにします。

Matchesアクティビティを使う場合は、パターンの部分に "(?<=合\s*計\s*)[\d,]+" を入力します。
ただし、戻り値が IEnumerable<Match>型になるので、For Each等で中身を取り出す必要があります。

Yoichi様
代入アクティビティと大変便利な.Net関数で無事に実現出来ました‼
やりたかったことが出来て、とてもすっきりしました‼
メタ文字(?<=合\s計\s等)の操作については、時と場合によって都度調べて応用出来そうです。
諦めかけていたので、本当にお蔭様です。

Yoichi様
先程の代入アクティビティを使って実現出来ましたので必要十分で解決をいたしましたが、
Matchesアクティビティを使う場合の方法もありがとうございました。
この戻り値なのですが、型の参照で"IEnumerable<Match>"型が出てこないのですが、
なぜでしょうか。

しばらくしましたら"解決"でクローズさせていただくことにします。
型のご回答いただきましたら、For Each等の使い方なども併せて、
自分自身でじっくり勉強させていただきます。
この度は誠にありがとうございました。

こんにちは

まずIEnumerable<T>を選択して、Tの部分はSystem.Text.RegularExpressions.Matchを選択
してみてください。

型の参照の仕方
型の参照が出来ました‼
エンドレスになりますので、
For Each等の使い方などと併せて以降は自分身でじっくり勉強します。
また機会がありましたら宜しくお願いします。
大変お世話になりありがとうございました。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.