mirror of
https://github.com/open-webui/open-webui.git
synced 2026-07-16 23:21:44 -05:00
[GH-ISSUE #18479] issue: unable to parse document using MinerU-vLLM API #34139
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @athenacykes on GitHub (Oct 21, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/18479
Check Existing Issues
Installation Method
Git Clone
Open WebUI Version
v0.6.34
Ollama Version (if applicable)
No response
Operating System
Docker based deployment on RHEL 9
Browser (if applicable)
No response
Confirmation
README.md.Expected Behavior
Document shall be parsed using MinerU's API which is added to its MinerU-vLLM image
Actual Behavior
Document is not successfully parsed
Steps to Reproduce
Logs & Screenshots
The following error is shown on Open WebUI docker logs:
`2025-10-21 03:55:27.895 | INFO | open_webui.routers.files:upload_file_handler:164 - file.content_type: application/pdf
2025-10-21 03:55:27.904 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.190.4.43:0 - "POST /api/v1/files/ HTTP/1.1" 200
2025-10-21 03:55:27.915 | INFO | open_webui.retrieval.loaders.mineru:_load_local_api:73 - Using MinerU Local API at http://10.100.3.1:8086
2025-10-21 03:55:27.915 | INFO | open_webui.retrieval.loaders.mineru:_load_local_api:113 - Sending file to MinerU Local API: 01a07597-51f4-4f73-9d35-1a965fc0505c_Red_Hat_build_of_Keycloak-26.0-API_Documentation-en-US.pdf
2025-10-21 03:55:27.930 | ERROR | open_webui.retrieval.loaders.mineru:load:65 - Error loading document with MinerU: 400: MinerU Local API request failed: 404 Client Error: Not Found for url: http://10.100.3.1:8086/file_parse - {'detail': 'Not Found'}
2025-10-21 03:55:27.931 | ERROR | open_webui.routers.retrieval:process_file:1695 - 400: MinerU Local API request failed: 404 Client Error: Not Found for url: http://10.100.3.1:8086/file_parse - {'detail': 'Not Found'}
Traceback (most recent call last):
File "/app/backend/open_webui/retrieval/loaders/mineru.py", line 122, in _load_local_api
response.raise_for_status()
│ └ <function Response.raise_for_status at 0x7f846853e020>
└ <Response [404]>
File "/usr/local/lib/python3.11/site-packages/requests/models.py", line 1026, in raise_for_status
raise HTTPError(http_error_msg, response=self)
│ │ └ <Response [404]>
│ └ '404 Client Error: Not Found for url: http://10.100.3.1:8086/file_parse'
└ <class 'requests.exceptions.HTTPError'>
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http://10.100.3.1:8086/file_parse
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/threading.py", line 1002, in _bootstrap
self._bootstrap_inner()
│ └ <function Thread._bootstrap_inner at 0x7f846b9689a0>
└ <WorkerThread(AnyIO worker thread, started 140203150792384)>
File "/usr/local/lib/python3.11/threading.py", line 1045, in _bootstrap_inner
self.run()
│ └ <function WorkerThread.run at 0x7f8406ffb6a0>
└ <WorkerThread(AnyIO worker thread, started 140203150792384)>
File "/usr/local/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 976, in run
result = context.run(func, *args)
│ │ │ └ ()
│ │ └ functools.partial(<function process_uploaded_file at 0x7f842a0bcf40>, <starlette.requests.Request object at 0x7f83d473e9d0>, ...
│ └ <method 'run' of '_contextvars.Context' objects>
└ <_contextvars.Context object at 0x7f84041a26c0>
File "/app/backend/open_webui/routers/files.py", line 117, in process_uploaded_file
process_file(request, ProcessFileForm(file_id=file_item.id), user=user)
│ │ │ │ │ └ UserModel(id='6ad84a9f-283b-44b4-89c8-ad4fcf4a94f2', name='xxxxxxx', email='xxxxx@xxxxx.com', username=None,...
│ │ │ │ └ '01a07597-51f4-4f73-9d35-1a965fc0505c'
│ │ │ └ FileModel(id='01a07597-51f4-4f73-9d35-1a965fc0505c', user_id='6ad84a9f-283b-44b4-89c8-ad4fcf4a94f2', hash=None, filename='Red...
│ │ └ <class 'open_webui.routers.retrieval.ProcessFileForm'>
│ └ <starlette.requests.Request object at 0x7f83d473e9d0>
└ <function process_file at 0x7f841d0c2a20>
File "/app/backend/open_webui/retrieval/loaders/main.py", line 237, in load
docs = loader.load()
│ └ <function MinerULoader.load at 0x7f841dabe520>
└ <open_webui.retrieval.loaders.mineru.MinerULoader object at 0x7f84040eda50>
File "/app/backend/open_webui/retrieval/loaders/mineru.py", line 63, in load
return self._load_local_api()
│ └ <function MinerULoader._load_local_api at 0x7f841dabe5c0>
└ <open_webui.retrieval.loaders.mineru.MinerULoader object at 0x7f84040eda50>
File "/app/backend/open_webui/retrieval/loaders/mineru.py", line 141, in _load_local_api
raise HTTPException(status.HTTP_400_BAD_REQUEST, detail=error_detail)
│ │ │ └ "MinerU Local API request failed: 404 Client Error: Not Found for url: http://10.100.3.1:8086/file_parse - {'detail': 'Not Fo...
│ │ └ 400
│ └ <module 'starlette.status' from '/usr/local/lib/python3.11/site-packages/starlette/status.py'>
└ <class 'fastapi.exceptions.HTTPException'>
fastapi.exceptions.HTTPException: 400: MinerU Local API request failed: 404 Client Error: Not Found for url: http://10.100.3.1:8086/file_parse - {'detail': 'Not Found'}
2025-10-21 03:55:27.940 | ERROR | open_webui.routers.files:process_uploaded_file:124 - Error processing file: 01a07597-51f4-4f73-9d35-1a965fc0505c
2025-10-21 03:55:27.944 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.190.4.43:0 - "GET /api/v1/files/01a07597-51f4-4f73-9d35-1a965fc0505c/process/status?stream=true HTTP/1.1" 200
2025-10-21 03:55:27.986 | INFO | open_webui.routers.retrieval:save_docs_to_vector_db:1300 - save_docs_to_vector_db: document Red_Hat_build_of_Keycloak-26.0-API_Documentation-en-US.pdf d21fa35f-d7fe-4204-8383-892016060f29
2025-10-21 03:55:27.990 | ERROR | open_webui.routers.retrieval:process_file:1695 - The content provided is empty. Please ensure that there is text or data present before proceeding.
Traceback (most recent call last):
File "/usr/local/lib/python3.11/threading.py", line 1002, in _bootstrap
self._bootstrap_inner()
│ └ <function Thread._bootstrap_inner at 0x7f846b9689a0>
└ <WorkerThread(AnyIO worker thread, started 140203687663296)>
File "/usr/local/lib/python3.11/threading.py", line 1045, in _bootstrap_inner
self.run()
│ └ <function WorkerThread.run at 0x7f8406ffb6a0>
└ <WorkerThread(AnyIO worker thread, started 140203687663296)>
File "/usr/local/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 976, in run
result = context.run(func, *args)
│ │ │ └ ()
│ │ └ functools.partial(<function add_file_to_knowledge_by_id at 0x7f841cfb79c0>, user=UserModel(id='6ad84a9f-283b-44b4-89c8-ad4fcf...
│ └ <method 'run' of '_contextvars.Context' objects>
└ <_contextvars.Context object at 0x7f8404eb8780>
File "/app/backend/open_webui/routers/knowledge.py", line 398, in add_file_to_knowledge_by_id
process_file(
└ <function process_file at 0x7f841d0c2a20>
File "/app/backend/open_webui/routers/retrieval.py", line 1656, in process_file
result = save_docs_to_vector_db(
└ <function save_docs_to_vector_db at 0x7f841d0c1bc0>
File "/app/backend/open_webui/routers/retrieval.py", line 1388, in save_docs_to_vector_db
raise ValueError(ERROR_MESSAGES.EMPTY_CONTENT)
│ └ <ERROR_MESSAGES.EMPTY_CONTENT: 'The content provided is empty. Please ensure that there is text or data present before procee...
└ <enum 'ERROR_MESSAGES'>
ValueError: The content provided is empty. Please ensure that there is text or data present before proceeding.
2025-10-21 03:55:27.999 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.190.4.43:0 - "POST /api/v1/knowledge/d21fa35f-d7fe-4204-8383-892016060f29/file/add HTTP/1.1" 400
`
The MinerU-vllm service shows the following API is available, but Open WebUI uses a non-existent API
file_parse:(APIServer pid=1) INFO 10-20 20:52:21 [api_server.py:1971] Starting vLLM API server 0 on http://0.0.0.0:30000 (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:36] Available routes are: (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /openapi.json, Methods: HEAD, GET (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /docs, Methods: HEAD, GET (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /docs/oauth2-redirect, Methods: HEAD, GET (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /redoc, Methods: HEAD, GET (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /health, Methods: GET (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /load, Methods: GET (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /ping, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /ping, Methods: GET (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /tokenize, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /detokenize, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /v1/models, Methods: GET (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /version, Methods: GET (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /v1/responses, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /v1/responses/{response_id}, Methods: GET (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /v1/responses/{response_id}/cancel, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /v1/chat/completions, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /v1/completions, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /v1/embeddings, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /pooling, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /classify, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /score, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /v1/score, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /v1/audio/transcriptions, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /v1/audio/translations, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /rerank, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /v1/rerank, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /v2/rerank, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /scale_elastic_ep, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /is_scaling_elastic_ep, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /invocations, Methods: POST (APIServer pid=1) INFO 10-20 20:52:21 [launcher.py:44] Route: /metrics, Methods: GET (APIServer pid=1) INFO: Started server process [1] (APIServer pid=1) INFO: Waiting for application startup. (APIServer pid=1) INFO: Application startup complete. (APIServer pid=1) INFO: 127.0.0.1:59026 - "GET /health HTTP/1.1" 200 OK (APIServer pid=1) INFO: 127.0.0.1:59988 - "GET /health HTTP/1.1" 200 OK (APIServer pid=1) INFO: 10.109.70.66:33590 - "POST /file_parse HTTP/1.1" 404 Not Found (APIServer pid=1) INFO: 10.109.70.66:33592 - "POST /file_parse HTTP/1.1" 404 Not Found (APIServer pid=1) INFO: 10.109.70.66:33596 - "POST /file_parse HTTP/1.1" 404 Not Found (APIServer pid=1) INFO: 10.109.70.66:33608 - "POST /file_parse HTTP/1.1" 404 Not Found (APIServer pid=1) INFO: 10.109.70.66:43198 - "POST /file_parse HTTP/1.1" 404 Not Found (APIServer pid=1) INFO: 127.0.0.1:58376 - "GET /health HTTP/1.1" 200 OK (APIServer pid=1) INFO: 10.109.70.66:43208 - "POST /file_parse HTTP/1.1" 404 Not Found (APIServer pid=1) INFO: 10.109.70.66:43216 - "POST /file_parse HTTP/1.1" 404 Not Found (APIServer pid=1) INFO: 10.109.70.66:43218 - "POST /file_parse HTTP/1.1" 404 Not Found (APIServer pid=1) INFO: 10.109.70.66:37444 - "POST /file_parse HTTP/1.1" 404 Not Found (APIServer pid=1) INFO: 10.109.70.66:37458 - "POST /file_parse HTTP/1.1" 404 Not Found (APIServer pid=1) INFO: 10.109.70.66:37468 - "POST /file_parse HTTP/1.1" 404 Not Found (APIServer pid=1) INFO: 127.0.0.1:32802 - "GET /health HTTP/1.1" 200 OK (APIServer pid=1) INFO: 127.0.0.1:47128 - "GET /health HTTP/1.1" 200 OK (APIServer pid=1) INFO: 127.0.0.1:38740 - "GET /health HTTP/1.1" 200 OK (APIServer pid=1) INFO: 127.0.0.1:38950 - "GET /health HTTP/1.1" 200 OK (APIServer pid=1) INFO: 10.109.70.66:36098 - "POST /file_parse HTTP/1.1" 404 Not Found (APIServer pid=1) INFO: 127.0.0.1:51668 - "GET /health HTTP/1.1" 200 OK (APIServer pid=1) INFO: 127.0.0.1:46770 - "GET /health HTTP/1.1" 200 OK (APIServer pid=1) INFO: 10.109.70.66:50278 - "POST /file_parse HTTP/1.1" 404 Not Found (APIServer pid=1) INFO: 127.0.0.1:33210 - "GET /health HTTP/1.1" 200 OK (APIServer pid=1) INFO: 127.0.0.1:57674 - "GET /health HTTP/1.1" 200 OKAdditional Information
No response