図のようなPDFファイルを読み込んでCSV保存を行いたいと考えております。
この時例えば、1、2、3それぞれの"00001"、“00003”、"00006"行のみを読み込んでデータテーブルを作成し(この場合9行2列になるということです)、ExcelにてCSV保存を行いたいです。どなたか解決案や策がわかる方がいらっしゃいましたらご教示いただけますと幸いです。
ちなみに現在プログラムを行っているPC環境ではUIExplorerなどを用いてもセレクターなどを細かく認識することが出来ません。そのため、PDFファイルをまるごと読み取り、Excelファイルに書き込んで、そこで繰り返しを用いて該当行のみを読み込み、別のExcelファイルに書き込んでCSV保存しようと考えております。
より簡単あるいは適切な方法がございましたら合わせてご提案いただけたらと思います。
よろしくお願いいたします。
Yoichi
(Yoichi)
2
こんにちは
PDFの構造にもよりますが
PDFのテキストを読み込み(Read PDF Text)アクティビティでPDFを読み込み
取得した文字列に対しての文字列操作で希望する形式に加工する方法を
試してみてはと思います。(可能かどうかは読み込んだ結果の文字列に
規則性があるかどうか次第です。)
1 Like
ご回答ありがとうございます。
PDFですが、少し規則性がないところがあることと、毎回データ量に多少の違いがあると予測されるため、ある程度試してはみたものの、文字列操作ではすべてに対応しきれない気がしております。
(私の知識不足もあるかと思うので、方法がございましたらご指摘いただきたく思います。)
PDFをテキストを読み込みした後、データテーブルに変換する方針ではいるのですが、
なかなかうまくデータテーブルにならないです。
具体的な方法、アクティビティがございましたらいくつかご提案いただければと思います。
また、他に何か方法思いつく方いらっしゃいましたらご教示お願いたします。
Yoichi
(Yoichi)
4
こんにちは
もし可能でしたらダミーデータでもよいので、実際のファイルを共有いただくと良いかと思います。
PDFは見た目は同じでも内部構造が複雑になっているケースも多く、画像だけですと
判断がつかないことも多いと思いますので
1 Like
ご連絡遅れてしまい申し訳ございません。
PDFですが、企業情報につきダミーデータでもファイル自体を共有できないんです。
申し訳ございません。
そこで質問をかえさせていただきたく思います。
PDFをRead PDF Textで読み取ると、横一列にある文字が全て1つの文字列になります。
ここから特定の文字列の必要な部分を取得したいのですが、PDFの形式上文字列の左側に数字が入る場合にてこずっております。
例えば上図において、
" 1 00001 AAAAA"や" 2 00001 AAAAA"のような場合です。
この時、"00001"のみや"AAAAA"の文字列のみ取得したいと考えております。
文字列操作で何とかしようとしているのですが、この先頭の数字の桁数が変化した場合に対応できておりません。(3桁になったりします。)
数字の桁数が変更しても必要な項目の文字列のみ取得するにはどうしたらよいでしょうか?
Yoichi
(Yoichi)
6
こんにちは
データを見ますと空白で区切られていますので
単純に空白でSplitすればよいように思えます。
間の空白がスペース1文字であるなら
text.Split({" "c})(1) で00001が取得できると思います。
このあたりは実際の条件によって調整する必要があるかもしれません。
ありがとうございます!
やってみます。
文字列操作がまだ不慣れでもう一つだけお聞きしたいことがございます。次のような場合です。(●はスペースを表します。)
“●200●●000●01●AAA●AA”
PDFをテキスト読み込みした際に、このようにスペースが空いてしまっており、この時に"000●01"と"AAA●AA"と取得したい場合はどのようにすればよいのでしょうか?
また、スペースから始まる場合、"200"が0番になるのでしょうか?
Yoichi
(Yoichi)
8
こんにちは
やり方はいろいろありますが、
おそらく1つの例だけでの対応を考えても他が成り立たなくなるので、
ある程度取りうるパターンを網羅しておいて、それらで共通して成り立つ抽出ルールを
見出していかなければなりません。(場合によっては取りうる文字種なども考慮します。)
上記の場合 Splitした結果の3番目4番目を、あるいは5番目6番目を結合すれば取得できますが
すべての例のおいて成り立つかは別途検討が必要かと思います。
こんにちは
なるほど、ありがとうございます。
5番目6番目を結合たり、右側から取得したりを組み合わせればできそうです。
丁寧にご教示いただきまして、ありがとうございました。