НейроАгент

Как исправить ошибку Docling при конвертации PDF

Решение ошибки RuntimeError и ConversionError при использовании Docling для конвертации PDF в Markdown. Пошаговые инструкции по устранению проблем с ресурсами и зависимостями.

Вопрос

Как исправить ошибку при использовании Docling для конвертации PDF?

Я пытаюсь использовать библиотеку Docling для конвертации PDF документа в Markdown, но получаю ошибку. Код, который я запускаю, основан на официальной документации:

python
from docling.document_converter import DocumentConverter

source = "https://arxiv.org/pdf/2408.09869"
converter = DocumentConverter()
result = converter.convert(source)
print(result.document.export_to_markdown())

Однако при выполнении этого кода возникает следующая ошибка:

Traceback (most recent call last):
  File "C:\Usersакс\Desktop\VS Code Projects\RAG\.venv\Lib\site-packages\docling\datamodel\document.py", line 171, in __init__
    self._init_doc(backend, path_or_stream)
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Usersакс\Desktop\VS Code Projects\RAG\.venv\Lib\site-packages\docling\datamodel\document.py", line 215, in _init_doc
    self._backend = backend(self, path_or_stream=path_or_stream)
                    ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Usersакс\Desktop\VS Code Projects\RAG\.venv\Lib\site-packages\docling\backend\docling_parse_v4_backend.py", line 206, in __init__
    self.parser = DoclingPdfParser(loglevel="fatal")
                  ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "C:\Usersакс\Desktop\VS Code Projects\RAG\.venv\Lib\site-packages\docling_parse\pdf_parser.py", line 579, in __init__
    self.parser = pdf_parser_v2(level=loglevel)
                  ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
RuntimeError: filename does not exists: C:\Users\Макс\Desktop\VS Code Projects\RAG\.venv\Lib\site-packages\docling_parse\pdf_resources_v2/glyphs//standard/additional.dat
2025-10-28 20:18:53,881 - INFO - Going to convert document batch...
Traceback (most recent call last):
  File "C:\Usersакс\Desktop\VS Code Projects\RAG\docling_test\docling1.py", line 10, in <module>
    result = converter.convert(source)
  File "C:\Usersакс\Desktop\VS Code Projects\RAG\.venv\Lib\site-packages\pydantic\_internal\_validate_call.py", line 39, in wrapper_function
    return wrapper(*args, **kwargs)
  File "C:\Usersакс\Desktop\VS Code Projects\RAG\.venv\Lib\site-packages\pydantic\_internal\_validate_call.py", line 136, in __call__
    res = self.__pydantic_validator__.validate_python(pydantic_core.ArgsKwargs(args, kwargs))
  File "C:\Usersакс\Desktop\VS Code Projects\RAG\.venv\Lib\site-packages\docling\document_converter.py", line 237, in convert
    return next(all_res)
  File "C:\Usersакс\Desktop\VS Code Projects\RAG\.venv\Lib\site-packages\docling\document_converter.py", line 260, in convert_all
    for conv_res in conv_res_iter:
                    ^^^^^^^^^^^^^
  File "C:\Usersакс\Desktop\VS Code Projects\RAG\.venv\Lib\site-packages\docling\document_converter.py", line 332, in _convert
    for item in map(
                ~~~^
        process_func,
        ^^^^^^^^^^^^^
        input_batch,
        ^^^^^^^^^^^^
    ):
    ^
  File "C:\Usersакс\Desktop\VS Code Projects\RAG\.venv\Lib\site-packages\docling\document_converter.py", line 379, in _process_document
    conv_res = self._execute_pipeline(in_doc, raises_on_error=raises_on_error)
  File "C:\Usersакс\Desktop\VS Code Projects\RAG\.venv\Lib\site-packages\docling\document_converter.py", line 415, in _execute_pipeline
    raise ConversionError(f"Input document {in_doc.file} is not valid.")
docling.exceptions.ConversionError: Input document 2408.09869v5.pdf is not valid.
-> Cannot close object, library is destroyed. This may cause a memory leak!

Интересно, что тот же код успешно выполняется на другом компьютере. В чем может быть проблема и как ее исправить?

Детали проблемы:

  • Библиотека: Docling
  • Операция: Конвертация PDF в Markdown
  • Ошибка: RuntimeError: filename does not exists и ConversionError: Input document is not valid
  • Контекст: Код работает на одном компьютере, но не работает на другом

Возможные причины:

  • Проблема с установкой или конфигурацией Docling
  • Отсутствие необходимых ресурсов или файлов
  • Конфликт версий библиотек
  • Проблемы с правами доступа к файлам
НейроАгент

Ошибка RuntimeError: filename does not exists: C:\Users\Макс\Desktop\VS Code Projects\RAG\.venv\Lib\site-packages\docling_parse\pdf_resources_v2/glyphs//standard/additional.dat при использовании Docling для конвертации PDF является распространенной проблемой, связанной с отсутствием необходимых ресурсов модели. Эта ошибка возникает, когда Docling пытается загрузить или найти требуемые файлы для обработки PDF, но они отсутствуют в системе.

Содержание

Основные причины ошибки

Ошибка возникает из-за отсутствия необходимых файлов ресурсов в директории pdf_resources_v2. Согласно исследованиям, основные причины включают:

  1. Неполная установка модели: Docling требует загрузки дополнительных ресурсов при первом запуске, но процесс может прерваться из-за сетевых проблем или ограничений.

  2. Ограничения доступа: В некоторых корпоративных сетях или на серверах с ограниченным интернет-доступом может блокироваться загрузка моделей из Hugging Face Hub.

  3. Конфликт версий: Несовместимость между версиями Docling, docling-parse и другими зависимостями может приводить к проблемам с загрузкой ресурсов.

  4. Проблемы с правами доступа: Файлы ресурсов могут отсутствовать из-за проблем с правами записи в директорию установки.

Способы решения проблемы

1. Ручная загрузка моделей

Самый надежный способ - вручную скачать необходимые модели:

python
import os
from pathlib import Path

# Создайте директорию для моделей, если она не существует
models_dir = Path.home() / ".cache" / "docling" / "models"
models_dir.mkdir(parents=True, exist_ok=True)

# Установите переменную окружения для использования локальных моделей
os.environ["DOCLING_MODELS_PATH"] = str(models_dir)

Затем используйте команду для скачивания моделей:

bash
docling-tools models download rapidocr

2. Переустановка Docling с очисткой

Полная переустановка с очисткой кэша может решить проблему:

bash
# Удалите существующую установку
pip uninstall docling docling-parse -y

# Очистите кэш
pip cache purge

# Установите последнюю версию
pip install docling[rapidocr]

3. Использование альтернативного бэкенда

Попробуйте использовать другой бэкенд обработки PDF:

python
from docling.document_converter import DocumentConverter
from docling.pipeline import PdfPipeline

# Используйте стандартный бэкенд вместо VLM
converter = DocumentConverter(
    pipeline=PdfPipeline(
        ocr=...,  # настройки OCR
        backend="standard"  # вместо VLM
    )
)

source = "https://arxiv.org/pdf/2408.09869"
result = converter.convert(source)
print(result.document.export_to_markdown())

Проверка и обновление зависимостей

Убедитесь, что все зависимости обновлены до совместимых версий:

bash
pip list | grep -E "(docling|torch|numpy)"

# Обновите основные зависимости
pip install --upgrade torch numpy
pip install --upgrade docling docling-parse

Важно: Как указано в исследованиях, существуют проблемы совместимости между версиями PyTorch и NumPy. Убедитесь, что у вас установлена совместимая комбинация.

Настройка офлайн-режима работы

Если вы работаете в среде без доступа к интернету, вам нужно заранее скачать все необходимые модели:

  1. Скачайте модели на машине с интернетом:
bash
# Создайте временную директорию для моделей
mkdir -p ~/docling_models_offline
export DOCLING_MODELS_PATH=~/docling_models_offline

# Скачайте все необходимые модели
docling-tools models download rapidocr
docling-tools models download docling-parse
  1. Перенесите модели на целевую машину и установите переменную окружения:
python
import os
os.environ["DOCLING_MODELS_PATH"] = "/path/to/your/models"
  1. Запустите Docling с правильно настроенным путем к моделям.

Альтернативные подходы к конвертации

1. Использование Docker-контейнера

Docker-контейнер может решить проблемы с зависимостями и путями к моделям:

bash
# Создайте Dockerfile
FROM python:3.11-slim

# Установите Docling и скачайте модели
RUN pip install docling[rapidocr] && \
    docling-tools models download rapidocr

# Запустите конвертацию
RUN python -c "
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
result = converter.convert('https://arxiv.org/pdf/2408.09869')
print(result.document.export_to_markdown())
"

2. Конвертация через CLI

Попробуйте использовать Command Line Interface:

bash
docling convert https://arxiv.org/pdf/2408.09869 output.md

3. Использование альтернативных библиотек

Если проблема не решается, рассмотрите альтернативные подходы:

python
# Альтернатива: pdf2image + OCR
from pdf2image import convert_from_path
import pytesseract

# Конвертируем PDF в изображения
images = convert_from_path("document.pdf")

# Обрабатываем каждое изображение
for i, image in enumerate(images):
    text = pytesseract.image_to_string(image, lang='rus+eng')
    print(f"Страница {i+1}: {text}")

Проверка совместимости версий

Проверьте совместимость версий компонентов:

Компонент Рекомендуемая версия Минимальная версия
Docling 2.3+ 2.0+
docling-parse Последняя 1.0+
PyTorch 2.2.2+ 2.0+
NumPy 2.0+ 1.21+

Чтобы проверить совместимость, выполните:

python
import sys
import pkg_resources

# Проверка совместимости версий
required_packages = [
    'docling>=2.3',
    'docling-parse>=1.0',
    'torch>=2.0',
    'numpy>=1.21'
]

for package in required_packages:
    try:
        pkg_resources.require(package)
        print(f"✓ {package} установлен")
    except pkg_resources.DistributionNotFound:
        print(f"✗ {package} не найден")
    except pkg_resources.VersionConflict:
        print(f"✗ Конфликт версий для {package}")

Заключение

Ошибка RuntimeError: filename does not exists в Docling обычно связана с отсутствием необходимых ресурсов модели. Основные решения включают:

  1. Ручную загрузку моделей с помощью docling-tools models download
  2. Полную переустановку с очисткой кэша
  3. Настройку офлайн-режима для работы без интернета
  4. Использование альтернативных бэкендов или подходов
  5. Проверку совместимости версий всех зависимостей

Поскольку код успешно работает на одном компьютере, но не на другом, наиболее вероятной причиной являются различия в среде установки - либо неполная загрузка моделей, либо конфликты версий зависимостей. Рекомендуется начать с ручной загрузки моделей и проверки совместимости версий.

Источники

  1. Running docling offline with pre-downloaded models - GitHub Issue #232
  2. Installation - Docling Documentation
  3. Manual download of default models - GitHub Discussion #2089
  4. docling-tools models download rapidocr not actually being used by default DocumentConverter - Issue #2500
  5. FAQ - Docling Documentation