一般に、Office系システムや帳票システム等で作成されたPDFは
テキストや罫線の情報をそのまま保持しており
テキスト検索やコピーなどができる状態になっています。
大量のPDFを対象に何かしたい場合、XML化するとテキスト処理ができ扱いやすくなります。
様々なライブラリもございますが、
一番手軽に使えるのは、Office系の変換です。
試しにやってみるには、「ファイルを開く」でPDFを開き、「名前を付けて保存」でXML形式を選択します。
以下、Windowsでフォルダ内のPDFファイルをxml変換する方法をご紹介します。
Microsoft Officeの場合
こちらのWordマクロを参考にしました。
拡張子を"doc"ではなく"pdf"に、処理内容を"xml形式で保存"にします。
フォルダ内のWordファイルを処理する
https://yourpearloyster.com/windows/wordvba/700.html
表示更新は止める方がオススメです。
Application.ScreenUpdating プロパティ - Microsoft Learn
https://learn.microsoft.com/ja-jp/office/vba/api/word.application.screenupdating
マクロをコマンドライン実行する方法もあります。
Microsoft Office 製品のコマンド ライン スイッチ
https://support.microsoft.com/ja-jp/office/microsoft-office-%E8%A3%BD%E5%93%81%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89-%E3%83%A9%E3%82%A4%E3%83%B3-%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81-079164cd-4ef5-4178-b235-441737deb3a6
Libre Officeの場合
Libreには形式変換専用コマンドが用意されています。
File Conversion Filter Names
https://help.libreoffice.org/latest/en-US/text/shared/guide/convertfilters.html
ところがdocからpdfなど、上記に記載されている形式以外では、なかなか成功しません。
pdfからxmlにする方法として、成功したのはDrawで扱うfodg形式です。
fodg形式は描画要素をXMLで保有しています。
rem ------------------------------
rem Libre Drawをサイレント実行してpdfファイルをfodg形式に変換するバッチ
rem ------------------------------
rem 空のフォルダにこのバッチ(拡張子を.batで保存)と対象pdf(複数可)を入れて実行
rem Draw以外も含めたLibre全終了するまでファイルを掴むので注意
rem ------------------------------
for %%f in (*.pdf) do (
"C:\Program\LibreOffice\sdraw.exe" --headless --convert-to fodg %%f
)
その他
Google WorkspaceもGASでWordの場合と同様のマクロを書けばできそうです。
ほかプログラミング言語毎の内容やOffice系以外のツールを使用する場合など方法は無限です。
類似内容でPower ShellでPDFの文字を抽出する方法の紹介もございました。