跳到内容

常见问题解答

这是从用户在 https://github.com/DS4SD/docling/discussions 上提问收集的常见问题汇编。

Is Python 3.13 supported?

Python 3.13 是否受到支持?

Docling 2.18.0 支持 Python 3.13。

Install conflicts with numpy (python 3.13)

与numpy的安装冲突(python 3.13)

当使用 docling-ibm-models>=2.0.7deepsearch-glm>=0.26.2 时,这些问题应该不再出现。Docling 支持的 numpy 版本 >=1.24.4,<3.0.0 应该适用于所有用法。

对于旧版本

在通过poetry安装docling和langchain时观察到了这一点。

...
Thus, docling (>=2.7.0,<3.0.0) requires numpy (>=1.26.4,<2.0.0).
So, because ... depends on both numpy (>=2.0.2,<3.0.0) and docling (^2.7.0), version solving failed.

Numpy 仅在某些 2.x.y 版本中开始添加对 Python 3.13 的支持。为了准备 3.13,Docling 依赖一个 2.x.y 版本来支持 3.13,否则依赖一个 1.x.y 版本。如果您在 pyproject.toml 中允许 3.13,Poetry 将尝试找到某种方法来调和 Docling 的 numpy 版本(某些 2.x.y)与 LangChain 的版本(某些 1.x.y) — 从而导致上述错误。

检查Python 3.13是否在你的pyproject.toml允许的Python版本中,如果是,请将其移除后再试。 例如,如果你有python = "^3.10",请改为python = ">=3.10,<3.13"。

如果您想保留与python 3.9-3.13的兼容性,您还可以在pyproject.toml中使用类似于以下的选择器

numpy = [
    { version = "^2.1.0", markers = 'python_version >= "3.13"' },
    { version = "^1.24.4", markers = 'python_version < "3.13"' },
]

来源:问题 #283

Are text styles (bold, underline, etc) supported?

文本样式(粗体、下划线等)是否支持?

目前在DoclingDocument格式中不支持文本样式。如果您有兴趣为此功能贡献,请打开一个讨论主题以集思广益设计。

注意:这不是一个简单的话题

How do I run completely offline?

我如何完全离线运行?

Docling不使用任何远程服务,因此它可以在完全隔离的空气隔绝环境中运行。

唯一的要求是将Docling运行时指向存储模型工件的位置。

例如

pipeline_options = PdfPipelineOptions(artifacts_path="your location")
converter = DocumentConverter(
    format_options={
        InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)
    }
)

来源:问题 #326

Which model weights are needed to run Docling?

运行Docling需要哪些模型权重?

PDF管道中使用的AI模型需要模型权重。其他文档类型(docx,pptx等)没有任何这样的要求。

处理PDF文档时,Docling需要从 https://huggingface.co/ds4sd/docling-models 获取模型权重。

当启用OCR时,一些引擎也需要模型工件。例如EasyOCR,Docling为其提供了特殊的管道选项以控制运行时行为。

SSL error downloading model weights

下载模型权重时出现 SSL 错误

URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)>

一些用户观察到了类似的SSL下载错误。当模型权重从Hugging Face获取时会发生这种情况。 当python环境没有最新的可信证书列表时,可能会发生错误。

可能的解决方案是

  • 更新到最新版本的 certifi,即 pip install --upgrade certifi
  • 使用 pip-system-certs 来使用您系统上最新的受信任证书。
  • 设置环境变量 SSL_CERT_FILEREQUESTS_CA_BUNDLEpython -m certifi 的值:
    CERT_PATH=$(python -m certifi)
    export SSL_CERT_FILE=${CERT_PATH}
    export REQUESTS_CA_BUNDLE=${CERT_PATH}
    
Which OCR languages are supported?

支持哪些OCR语言?

Docling支持多种OCR引擎,每个引擎都有自己支持的语言列表。
这里是原始OCR引擎文档中列出了OCR语言的链接集合。

在Docling中设置OCR语言是通过OCR管道选项完成的:

from docling.datamodel.pipeline_options import PdfPipelineOptions

pipeline_options = PdfPipelineOptions()
pipeline_options.ocr_options.lang = ["fr", "de", "es", "en"]  # example of languages for EasyOCR
Some images are missing from MS Word and Powerpoint

某些图片在 MS Word 和 Powerpoint 中缺失

Docling 使用的图像处理库仅在 Windows 平台上能够处理嵌入的 WMF 图像。 如果您在其他操作系统上,这些图像将被忽略。

HybridChunker triggers warning: 'Token indices sequence length is longer than the specified maximum sequence length for this model'

HybridChunker触发警告:'令牌索引序列长度超过该模型指定的最大序列长度'

简而言之: 在HybridChunker的上下文中,这是一个已知且预期的“误报”。

详细信息:

使用 HybridChunker 通常会触发这样的警告:

令牌索引序列长度超过了该模型指定的最大序列长度(530 > 512)。将此序列通过模型运行将导致索引错误

这是一个由 transformers 发出的警告,表示实际上 将这个序列运行通过模型 将导致索引错误,即只有在确实将特定序列传递给(嵌入)模型时才会出现问题。

不过在我们这种情况下,这被视为“假警报”,因为发生的事情如下:

  • 分块器在一个可能很长的序列(例如,警告中提到的530个标记)上调用标记器,以便计数其标记,即评估其是否足够短。在这一点上,transformers已经发出了上面的警告!
  • 每当当前序列过大时,分块器会继续将其拆分(不过转换器的警告已经显示过了)

重要的是生成块的实际令牌长度。 下面的代码片段可以用于获取实际的最大块大小(对于希望确认这一点不会超过模型限制的用户):

max_len = 0
for i, chunk in enumerate(chunks):
    ser_txt = chunker.serialize(chunk=chunk)
    ser_tokens = len(tokenizer.tokenize(ser_txt, max_len_length=None))
    if ser_tokens > max_len:
        max_len = ser_tokens
    print(f"{i}\t{ser_tokens}\t{repr(ser_txt[:100])}...")
print(f"{max_len=}")

来源:问题 docling-core#119