構造化を実現する、4つの具体的手法とは?
では、構造化とはどのようにして行うのか。PDF形式のドキュメントを非構造化データの例として、具体的な手法とその特徴を紹介する。
1. ドキュメントファイル構造解析
PDFの構造化を行う簡易な方法は、PDF内部に埋め込まれたテキストと、その座標情報を読み取り、内容を順次抽出していくというものだ。読み取りのための無料PDF解析ツールは、オープンソース・ソフトウェア(OSS)として公開されているものも多く、それらを用いてシステムに導入できる。
しかし、この方法には、「作者の意図通りの順番でテキストを抜き出すことができない」という問題がある。PDF内部に埋め込まれた情報を上から順に抽出するため、図表と文章が横並びになっていたり、多段構成のドキュメントに対しては、テキスト同士が混在してしまい意味のある文章を取り出せなかったりといった場合があるのだ。こういった“不正な”テキストをRAGシステムに取り込むと、適切に検索ができなかったり、間違った回答をしてしまったりする可能性が高まる。
また、ドキュメント内の文字が、文字情報を持たずただの“画像”として挿入されている場合も、テキストを抽出できない。画像に対し、光学文字認識(OCR)を用いると、テキストの抽出自体は可能になる。ただし、OCRを行ったとしても、やはり意味のある順番でテキストを抽出できないという問題は残る。
2. 汎用LLMを用いた構造化
ChatGPTなどの汎用LLMには、テキストと画像の両方を受け取り、内容を把握できるモデル(GPT-4oなど)がある。この汎用LLMを用いることで、意味のあるまとまりを識別でき、前述の問題を解決できる場合がある。
しかし、ビジネス現場で用いられる企画書や報告書といった、複雑でデザイン性の高い形式のドキュメントに対しては、抽出の際にハルシネーションが起こり、本来存在するはずのテキストが欠損したり、別のテキストに置き換わったりしてしまうなどのミスが発生する。たとえば、スライド形式の資料に含まれる表を構造化しようとすると、空白セルの位置がずれてしまい、セルの記載内容と列の意味が合わなくなってしまう。
また、複数セルの内容がひとつに混成してしまい、内容も実際とは異なってしまうケースがある。こうしたミスのある構造化データをRAGシステムに取り込むと、本来摂取できる情報を落としたり誤った回答をしてしまったりする恐れがある。これは情報の把握に正確性が求められるビジネスシーンでの利用においては大きな問題となる。
[5]「py-pdf/benchmarks」(GitHub)