7
4

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にひと手間加えてRAGの精度を向上させられるかもしれない方法を見つけました

Posted at

皆さん、PDFでRAGやってますよね?でも、精度が出ないことありますよね?


いい感じに複雑なPDFを見つけました。

中小企業の情報セキュリティ対策ガイドライン
付録6:中小企業のためのクラウドサービス安全利用の手引き

image.png

表があったり図形の中の文字があったりします。

image.png

PDFのままテキスト抽出する

マイクロソフト製で話題のMarkItDownを使用してテキストを抽出してみましょう。

  • インストール

    pip install markitdown
    
  • 実行

    markitdown 000072150.pdf > 000072150.md
    

やばいくらい簡単です。

では、結果を見てみましょう。
先ほど提示した右ページの「チェックシートNo.1」「チェックシートNo.2」の横並びのところですが、内容が入れ子になってしまいました。(ハイライトしている部分がNo.1でその間にあるのがNo.2の内容です)

また、見た目を忠実に再現しているからか、文の途中で改行されています。

image.png

意外とPDFをつかってRAGをすると、こういうケースあると思います

PDFを一旦Wordに変換する

おそらくこのファイルはWordで作ったものだと推測されるので、PDFをWordに戻してやれば精度が良くなるのではないかと考えました。

AdobeがオンラインツールとしてPDFから各種Officeファイルへの変換機能を提供しています。

無料で使えるとありますが、無制限に使えるわけではなく一定回数以上は有料になるようです。

このオンラインツールを使って先程のPDFをWord形式に変換してみます。

変換したファイルをWordで開いてみると、フォントが少しおかしいですが、内容は問題なく変換されているように見えます。

では、このWordファイルからテキストを抽出してみましょう。

markitdown 000072150.docx > 000072150.docx.md

やばい。完璧。

image.png

そういえば、MarkItDownはMarkdownにしてくれるツールでしたねwww
(PDFをそのまま変換したときは、全然Markdownじゃなかったですね。)

一度Wordを経由すると、 表も完璧です

image.png

これは、、すごい!

LibreOfficeで同じことができないか実験

いちいちブラウザ上で変換するわけにもいかないので、コマンドで変換したくなりました。
LibreOfficeを使うと、PDFをWordに変換できるようなので早速試しました。

sudo apt update
sudo apt install -y libreoffice

変換コマンドはこのようになります。

PDFをWord(2010以降)の形式に変換
lowriter --headless --infilter='writer_pdf_import' --convert-to docx:"Office Open XML Text" 000072150.pdf --outdir libreoffice_output

libreoffice_outputディレクトリが作成され、000072150.docxが出力されます。

他の形式への変換はこのようになります。

PDFをWord 2007形式に変換
lowriter --headless --infilter='writer_pdf_import' --convert-to docx:"MS Word 2007 XML" 000072150.pdf --outdir libreoffice_output
PDFをWord 97–2003形式に変換
lowriter --headless --infilter='writer_pdf_import' --convert-to doc:"MS Word 97" 000072150.pdf --outdir libreoffice_output

コマンドの使い方、ファイルフォーマットの情報は公式ドキュメントを参照ください。
https://help.libreoffice.org/latest/en-US/text/shared/guide/convertfilters.html

ではMarkItDownでテキストを抽出してみましょう。

markitdown libreoffice_output/000072150.docx > libreoffice_output/000072150.docx.md

結果は、、、

image.png

全然あかんかった😭

No.1のあとにNo.3があって、更にNo.2はないけどNo.4がありますね。。

変換オプションとかあるかと思って色々試したのですが、残念ながらこれ以上良い結果にすることはできませんでした。

まとめ

やっぱりPDFのことはAdobeが最強なのか?

PDFを上手にWordにする方法ご存じの方いたら、情報提供お願いします!!

7
4
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
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?