Difyのローカル展開では、デフォルトでドキュメント解析エンジンが内蔵されていないのですか?

現在、スキャンされたPDFを解析するためにドキュメントパーサーを使用する必要があるため、Unstructuredサービスを別途デプロイする必要がありますか?これは非常に頻繁に使用される機能ですが、公式ドキュメントには説明が見つかりません!

参照: Document Extractor - Dify Docs


404です。ドキュメントパーサーを見ろという意味ですか?

ローカルにすでに unstructured-api がインストールされ、実行されていますが、なぜドキュメントパーサーのコンポーネントはスキャンされたPDFファイル内の内容を認識できないのでしょうか?
.env ファイルの設定は以下の通りです:

Dify のワークフローは以下の通りです:

英語版ページのURLを貼り付けました。翻訳ツールの影響でURLが変更された可能性があります。
こちらが中国語版のページです:

PDFがスキャンされたものであるため、実際のテキストデータではなく画像が含まれていると推測されます。
この場合、テキストを抽出するには何らかのOCR処理が必要です。私の知る限り、UnstructuredもデフォルトではOCRを実行しません。OSS版ではOCRエージェントを設定してOCRを使用する必要があると思います:

ありがとうございます。もう一度よく調べてみます。非常に感謝します。私がアップロードしたファイルは、確かにスキャン版のPDFで、テキストは含まれておらず、画像のみです。

この記事に従って試してみましたが、最終的に成功しませんでした。difyプラットフォームのdocker-compose.yml:

記事に従って環境変数を設定し、unstructuredコンテナを再起動しました(docker compose down と up -d を実行)。

最終的なテスト結果も同じです:

docker-unstructured-1コンテナ内のPython環境も確認しましたが、特に問題はなさそうです:

~ $ python -V
Python 3.12.12
~ $ pip list
Package Version


accelerate 1.12.0
aiofiles 25.1.0
annotated-doc 0.0.4
annotated-types 0.7.0
antlr4-python3-runtime 4.9.3
anyio 4.12.0
backoff 2.2.1
beautifulsoup4 4.14.3
cachetools 6.2.4
certifi 2025.11.12
cffi 2.0.0
charset-normalizer 3.4.4
click 8.3.1
coloredlogs 15.0.1
contourpy 1.3.3
cryptography 46.0.3
cycler 0.12.1
dataclasses-json 0.6.7
Deprecated 1.3.1
effdet 0.4.1
emoji 2.15.0
et_xmlfile 2.0.0
fastapi 0.128.0
filelock 3.20.1
filetype 1.2.0
flatbuffers 25.12.19
fonttools 4.61.1
fsspec 2025.12.0
google-api-core 2.28.1
google-auth 2.45.0
google-cloud-vision 3.11.0
googleapis-common-protos 1.72.0
gpg 1.24.3
grpcio 1.76.0
grpcio-status 1.76.0
h11 0.16.0
hf-xet 1.2.0
html5lib 1.1
httpcore 1.0.9
httpx 0.28.1
huggingface-hub 0.36.0
humanfriendly 10.0
idna 3.11
Jinja2 3.1.6
joblib 1.5.3
kiwisolver 1.4.9
langdetect 1.0.9
lxml 6.0.2
Markdown 3.10
MarkupSafe 3.0.3
marshmallow 3.26.2
matplotlib 3.10.8
ml_dtypes 0.5.4
mpmath 1.3.0
msoffcrypto-tool 5.4.2
mypy_extensions 1.1.0
networkx 3.6.1
nltk 3.9.2
numpy 1.26.4
nvidia-cublas-cu12 12.8.4.1
nvidia-cuda-cupti-cu12 12.8.90
nvidia-cuda-nvrtc-cu12 12.8.93
nvidia-cuda-runtime-cu12 12.8.90
nvidia-cudnn-cu12 9.10.2.21
nvidia-cufft-cu12 11.3.3.83
nvidia-cufile-cu12 1.13.1.3
nvidia-curand-cu12 10.3.9.90
nvidia-cusolver-cu12 11.7.3.90
nvidia-cusparse-cu12 12.5.8.93
nvidia-cusparselt-cu12 0.7.1
nvidia-nccl-cu12 2.27.5
nvidia-nvjitlink-cu12 12.8.93
nvidia-nvshmem-cu12 3.3.20
nvidia-nvtx-cu12 12.8.90
olefile 0.47
omegaconf 2.3.0
onnx 1.20.0
onnxruntime 1.23.2
opencv-python 4.11.0.86
openpyxl 3.1.5
packaging 25.0
pandas 2.3.3
pdf2image 1.17.0
pdfminer.six 20260107
pi_heif 1.1.1
pikepdf 10.1.0
pillow 12.0.0
pip 25.1.1
proto-plus 1.27.0
protobuf 6.33.2
psutil 7.2.1
pyasn1 0.6.1
pyasn1_modules 0.4.2
pycocotools 2.0.11
pycparser 2.23
pycryptodome 3.23.0
pydantic 2.12.5
pydantic_core 2.41.5
pypandoc 1.16.2
pyparsing 3.3.1
pypdf 6.5.0
pypdfium2 5.2.0
python-dateutil 2.9.0.post0
python-docx 1.2.0
python-iso639 2025.11.16
python-magic 0.4.27
python-multipart 0.0.21
python-oxmsg 0.0.2
python-pptx 1.0.2
pytz 2025.2
PyYAML 6.0.3
RapidFuzz 3.14.3
ratelimit 2.2.1
regex 2025.11.3
requests 2.32.5
requests-toolbelt 1.0.0
rsa 4.9.1
safetensors 0.7.0
scipy 1.16.3
setuptools 80.9.0.post20251111
six 1.17.0
soupsieve 2.8.1
starlette 0.41.2
sympy 1.14.0
timm 1.0.22
tokenizers 0.22.1
torch 2.9.1
torchvision 0.24.1
tqdm 4.67.1
transformers 4.57.3
triton 3.5.1
typing_extensions 4.15.0
typing-inspect 0.9.0
typing-inspection 0.4.2
tzdata 2025.3
unstructured 0.18.24
unstructured-client 0.42.6
unstructured_inference 1.1.1
unstructured.pytesseract 0.3.15
urllib3 2.6.2
uvicorn 0.40.0
webencodings 0.5.1
wrapt 2.0.1
xlrd 2.0.2
xlsxwriter 3.2.9

アップデートありがとうございます。

いくつかの事実を共有させていただきます。

  • 基本的に、.env ファイルで ETL_TYPEUnstructured に設定しない限り、Unstructured は使用されません。
  • ただし、ETL_TYPE 設定の目的は、Knowledge にアップロードしたドキュメントを処理するためであり、ワークフロー内のテキスト抽出ノード用ではありません
  • したがって、ワークフロー内のテキスト抽出ノードでは Unstructured を使用できません
  • また、Knowledge にファイルをアップロードした場合でも(PDFファイルの場合)、ETL_TYPE の設定に関係なく、テキスト抽出には pypdfium2 が使用されます。Unstructured は使用されません。

回避策として、すでに Unstructured を導入してしまったという状況であれば、テキスト抽出ノードの代わりに以下のツールを使用することを検討してみてください。このツールでは strategy も設定可能なので、OCR にも対応できると思われます。ただし、私自身は試したことがないので、お手伝いできる範囲は少し限られます。

また、マーケットプレイスで「OCR」や「PDF」などのキーワードで検索すれば、コミュニティによって作成されたOCRツールが見つかるはずです。

お役に立てれば幸いです。

ご返信ありがとうございます。

この図によると、私は現在のこのような設定が機能するとずっと考えていましたが、よく読んでみると、2つの疑問点があります。

  1. このunstructuredはdocument extractor node(ドキュメントエクストラクター)に使用できるとありますが、ワークフローでは使用できないというあなたの説明と矛盾しています!
  2. ドキュメントエクストラクターにのみ使用できるのでしょうか(pptxをアップロードした場合)?

@Dify_Forum_Helper さん、Q&Aを要約してください。

Q&Aセッションの概要は以下の通りです。

問題点
ユーザーzhoucimingは、DifyワークフローのDocument Extractorノードを使用して、スキャンされたPDFからテキストを抽出できませんでした。ローカルのUnstructuredサービスを展開し、.envおよびdocker-compose.yamlETL_TYPE=Unstructured(およびOCR環境変数)を設定したにもかかわらず、出力は空のままでした。

診断
コミュニティメンバーkurokoboは、ネイティブ設定の制限を明確にしました。

  1. 設定の範囲: .env内のETL_TYPE=Unstructured設定は、主にナレッジベースのインデックス作成(データセットのアップロード)のために設計されており、ワークフロー内のランタイム「Document Extractor」ノード用ではありません。
  2. PDFの処理: ナレッジベース内であっても、DifyはETL_TYPE設定に関わらず、PDFに対してpypdfium2をデフォルトで使用することが多く、これはUnstructuredサービス(およびそのOCR)が呼び出されないことを意味します。
  3. ドキュメントと現実: ユーザーは、.envのコメントにUnstructuredが「pptx用のドキュメント抽出ノード」をサポートしていると記載されていることを指摘し、ワークフローノードでの他のファイルタイプ(PDFなど)への適用はデフォルトではサポートされていないことを確認しました。

解決策 / 回避策
ワークフロー内でスキャンされたPDFに対してOCRを実行するには:

  • 推奨事項: ネイティブのDocument Extractorノードの代わりに、Unstructuredプラグイン(Difyマーケットプレイスで利用可能)または他のコミュニティ作成のOCRツールを使用してください。
  • 理由: プラグインは、ネイティブノードがグローバル環境変数を通じて公開または尊重しない処理戦略(例:OCRの有効化)を明示的に設定することを可能にします。

私の説明が少し不十分でした。より正確に言うと、テキスト抽出ノードでUnstructuredが使用できるかどうかはファイルタイプに依存します。

今回の質問はPDFに関するものだったので、PDFファイルを前提として「テキスト抽出ノードでは使用できません」と回答しました。
しかし、.env.exampleのコメントにもあるように、pptpptxdocepubファイルの場合、UNSTRUCTURED_API_URLUNSTRUCTURED_API_KEYを使用してテキスト抽出が行われます。