0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unstructured APIを試してみた

Last updated at Posted at 2024-11-18

はじめに

本記事では、Unstructured API を Docker 上で動かし、PDFドキュメントなどからテキストや構造化データを抽出する手順を紹介します。背景としては、RAG (Retrieval-Augmented Generation) を構築するため、さまざまな形式の文書から効率的にテキストデータを取り出す必要があるからです。

Unstructured APIについて

Unstructured API は、PDF、DOCX、HTMLなど、さまざまな非構造化データからテキストデータを抽出するためのツールです。利用方法は、サーバーレスサービスやライブラリ形式、自分でホスティング可能なAPI形式など、複数の形態が提供されています。

環境構築: DockerでUnstructured APIをインストール

Unstructured API を Docker イメージで取得し、コンテナを立ち上げる手順を以下に示します。これにより、ローカル環境でAPIを動作させることが可能です。

docker pull downloads.unstructured.io/unstructured-io/unstructured-api:latest

docker run -p 8000:8000 -d --rm --name unstructured-api downloads.unstructured.io/unstructured-io/unstructured-api:latest

テスト実行

次に、APIをテストし、ファイルからデータを抽出してみます。以下のコマンドでリクエストを送信し、結果を確認します。

curl -X POST http://<host>:8000/general/v0/general \
  -H 'accept: application/json'  \
  -H 'Content-Type: multipart/form-data' \
  -F 'files=@<file name>' \
  -F 'unique_element_ids=true' \
  -F 'strategy=fast' 
オプション説明

多くのパラメータがありますが、まずは以下の2つのオプションを押さえておけば問題ありません。

  • strategy
    • fast: デフォルトのオプションで、PDFや画像を処理する際にOCRを行いません。処理速度を優先する場合に最適です。
    • hi_res: OCR処理を実行します。画像内のテキストも抽出されますが、処理時間が大幅に増加します。

OCRを実行すると、処理時間が約20倍(体感的にはもっと)かかることがあります。まずは fast で試してみるのが推奨されます。

実行結果

2CPUのサーバーで16MB、62ページのPDFを処理したところ、OCRなしでは数秒で完了しましたが、OCRを実行すると約8分かかりました。この際、Tesseract が実行されていることが確認できました。

image.png

image.png

使用したドキュメント

所感

  • Unstructured API はさまざまなファイル形式に対応しており、すぐにAPIとして利用できる点が非常に便利です。テキスト抽出の処理も速く、イベント処理やリクエスト処理においても使用できそうです。
  • ただし、OCRを使用する場合は処理時間が長くなるため、実用性には制限があるかもしれません。特にOCRの精度を確認するための検証が必要です。

参考リンク

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?