1041 Commits

Author SHA1 Message Date
Jefsky Wong 46763a195c docs(cli): clarify help text (#3408)
fix(cli): clarify help text

Fix confusing CLI help output by correcting wording and aligning the source argument name.

Signed-off-by: Jefsky <hwj3344@hotmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-17 08:44:49 +02:00
Pragnya Khandelwal ab6aa050be fix: fail on empty markdown export (#3429)
* fix: fail on empty markdown export

Signed-off-by: Pragnya <prag1704@gmail.com>

* chore: format files

Signed-off-by: Pragnya <prag1704@gmail.com>

* test: cover markdown export stat failures

Signed-off-by: Pragnya <prag1704@gmail.com>

* refactor: move cli export helpers

Signed-off-by: Pragnya <prag1704@gmail.com>

* test: cover export utils split list

Signed-off-by: Pragnya <prag1704@gmail.com>

---------

Signed-off-by: Pragnya <prag1704@gmail.com>
2026-05-17 08:35:46 +02:00
Sunny He 038b9916bc fix: fix OSTL ucel merged incorrectly (#3453)
The `_parse_otsl_output` function used to translate VLM OSTL output
into structured table data incorrectly merges ucel to the left
if they are not in the first column. This causes column spanning
cells to be incorrectly reported as row spanning.

Signed-off-by: Sunny He <sunny_he@apple.com>
2026-05-17 08:33:30 +02:00
Christoph Auer bcd550950a fix(service): Improve transport-level connection error handing in client SDK (#3439)
* Enable retry on HTTP 502

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* Retry on transport failures

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* Re-establish websocket channel after transient connectivity failures

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

---------

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>
2026-05-15 11:18:47 +02:00
Aditya Sasidhar eceedc2f40 feat(latex): add optional Tectonic TikZ rendering (#3369)
* feat(latex): add asynchronous TikZ rendering via Tectonic engine

This commit introduces a high-performance, asynchronous pipeline for rendering
TikZ diagrams into images during LaTeX document conversion.

Key Changes:
- Tectonic Integration (`TectonicEngine`): Compiles `tikzpicture` environments
  into PDFs using Tectonic, auto-downloading the binary if missing. Rasterizes
  the PDF to 300 DPI images.
- Asynchronous Processing: Utilizes a dynamic `ThreadPoolExecutor` (scaled to
  `os.cpu_count() - 1`) to render multiple diagrams concurrently without
  blocking the main document conversion pipeline.
- Preamble Extraction: Dynamically parses the main document's preamble and
  injects it into standalone diagrams to ensure compatibility with complex
  libraries (e.g., `pgfgantt`, `tikz-cd`, `tkz-euclide`).
- Graceful Fallbacks: If Tectonic compilation fails due to LaTeX syntax errors
  or incompatible packages, the engine gracefully falls back to preserving the
  raw TikZ source code as a `CodeMetaField` to prevent data loss.
- CLI Support: Added `--tikz-engine tectonic` option to enable the backend
  configuration.

Resolves pre-commit hooks (MyPy, Ruff linter/formatter).

Signed-off-by: Aditya Sasidhar <arctic@arctic>
Signed-off-by: Aditya Sasidhar <telikicherlaadityasasidhar@gmail.com>

* feat(latex): add optional Tectonic TikZ rendering with isolated dependency staging

  Add opt-in TikZ image rendering for the LaTeX backend using Tectonic,
  while preserving stable fallback behavior when rendering fails.

  What this changes:
  - add optional `tikz_engine="tectonic"` backend support for TikZ diagrams
  - render `tikzpicture` environments asynchronously during LaTeX parsing
  - preserve raw TikZ code as `PictureMeta.code` whenever rendering fails,
    times out, or rasterization cannot complete
  - add Tectonic engine options for:
    - automatic binary download
    - per-diagram timeout
    - shell escape control
  - make shell escape explicit opt-in via CLI/backend config
  - sanitize known pdfTeX-only assignment lines in preambles for better
    Tectonic/XeTeX compatibility
  - restore file-backed relative TikZ compatibility by staging only explicit
    local dependencies (`\input`, `\include`, `\includegraphics`) into the
    temp render directory
  - block dependency path traversal and avoid ambient source-directory search
  - rasterize generated PDFs with locking and crop whitespace from output

  CLI / config updates:
  - add `--tikz-engine` / `-T`
  - add `--no-tikz-engine-download`
  - add `--tikz-engine-timeout`
  - add `--tikz-shell-escape`

  Tests:
  - add focused Tectonic engine tests for download behavior, timeout,
    preamble sanitization, shell escape toggling, dependency staging,
    and path traversal blocking
  - add backend tests for TikZ fallback behavior and file-backed source-root
    handling

Signed-off-by: Aditya Sasidhar <telikicherlaadityasasidhar@gmail.com>

* docs: add documentation for pipeline options

Signed-off-by: Aditya Sasidhar <telikicherlaadityasasidhar@gmail.com>

* fix(latex): keep Tectonic engine within module boundaries

Signed-off-by: Aditya Sasidhar <telikicherlaadityasasidhar@gmail.com>

* fix(latex): fix mypy error by narrowing backend option types

Signed-off-by: Aditya Sasidhar <telikicherlaadityasasidhar@gmail.com>

* revert: drop unintended pyproject and uv lock updates

Signed-off-by: Aditya Sasidhar <telikicherlaadityasasidhar@gmail.com>

* fix(latex): Got rid of the niche latex tikz based tectonic control flags

Signed-off-by: Aditya Sasidhar <telikicherlaadityasasidhar@gmail.com>

---------

Signed-off-by: Aditya Sasidhar <arctic@arctic>
Signed-off-by: Aditya Sasidhar <telikicherlaadityasasidhar@gmail.com>
2026-05-15 09:03:17 +02:00
Phil Nash 61ac4b3d19 refactor: use ConversionStatus type for task_status field (#3438)
It looks as though the `task_status` of a `TaskStatusResponse` should be the same as the `status` of a `ConversionResuilt` at least for when the task is a conversion. The other type of task is a chunking task, would that have different statuses?

If this `task_status` field can be narrowed from str to an enum, the Docling-Serve API docs will be more useful.

Signed-off-by: Phil Nash <philnash@gmail.com>
2026-05-15 06:41:16 +02:00
geoHeil 2d1dcde869 chore: add shared Python agent skills (#3445)
Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>
2026-05-15 06:39:16 +02:00
ibrahimGoumrane 5fadc6d180 feat: add image_placeholder and use_markdown_images as fields in the BaseChunkerOptions (#3436)
* feat: add image_placeholder and use_markdown_images as fields in the BaseChunkerOptions

Signed-off-by: Ibrahim Goumrane <goumrane.ibrahim@ensam-casa.ma>

* Fixing linting issues

Signed-off-by: Ibrahim Goumrane <goumrane.ibrahim@ensam-casa.ma>

---------

Signed-off-by: Ibrahim Goumrane <goumrane.ibrahim@ensam-casa.ma>
2026-05-13 07:02:06 +02:00
geoHeil 208fe565e2 ci: unify Python version to 3.10 across single-version CI lanes (#3421)
ci: unify Python version to 3.10 across CI lanes

Several CI jobs were hardcoded to Python 3.12 while the default matrix
and the project's minimum supported version is 3.10. This caused PR
runs (e.g. #3414) to mix 3.10 and 3.12, hiding 3.10-specific issues
behind 3.12-only checks and adding noise to the CI summary.

Switch the single-version CI lanes (lint, tach, pr-fast-checks,
windows/macOS smoke tests, build-package, test-package) to 3.10 so
they match the default matrix. Release/publishing flows (cd.yml,
pypi.yml) keep their existing 3.12 pin since they target the
release toolchain rather than the CI matrix.

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 21:37:13 +02:00
David Wallace 694cf0c791 fix: Handle valid JATS contributor name variants (#3432)
fix: Handle JATS author name variants

Signed-off-by: David Wallace <dwallace0723@gmail.com>
2026-05-12 10:44:54 +02:00
benvizel b5f2e530e2 feat(extraction): add Granite Vision 4.1 as alternative KVP extraction model (#3398)
Introduce a unified TransformersExtractionModel that supports multiple
prompt styles via an ExtractionPromptStyle enum. This replaces the
need for separate model classes per VLM.

- Add ExtractionPromptStyle enum (NUEXTRACT, GRANITE_VISION)
- Add prompt_utils.py with style-specific prompt builders
- Add TransformersExtractionModel with prompt-style dispatch
- Add GRANITE_VISION_4_1_TRANSFORMERS model spec
- Add extraction_prompt_style field to VlmExtractionPipelineOptions

Signed-off-by: Ben Wiesel <benwiesel@ibm.com>
Co-authored-by: Ben Wiesel <benwiesel@ibm.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-12 06:53:22 +02:00
Brighton 0c317060cf fix(docx): preserve custom numbering text prefix in list markers (#3425)
* fix(docx): preserve custom numbering text prefix in list markers

* DCO Remediation Commit for Brighton <brighton@Brightons-MacBook-Air.local>

I, Brighton <brighton@Brightons-MacBook-Air.local>, hereby add my Signed-off-by to this commit: b92e32597b

Signed-off-by: Brighton <brighton@Brightons-MacBook-Air.local>

* fix: resolve lint errors in test (unused vars, import order)

Signed-off-by: Brighton <brighton@Brightons-MacBook-Air.local>

* style: fix ruff lint and format

Signed-off-by: Brighton <brighton@Brightons-MacBook-Air.local>

* refactor: move import re to top of file

Signed-off-by: Brighton <brighton@Brightons-MacBook-Air.local>

---------

Signed-off-by: Brighton <brighton@Brightons-MacBook-Air.local>
Co-authored-by: Brighton <brighton@Brightons-MacBook-Air.local>
2026-05-12 06:49:34 +02:00
Christoph Auer ce87c1f091 chore: Add Agents.md instructions (#3426)
* Add instructions

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* Add statement about tests

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* Shorten rules

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

---------

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>
2026-05-11 15:14:12 +02:00
Christoph Auer 64ddeb64b8 fix: Update service client URL parsing with v1 suffix (#3415)
Update service client URL parsing of v1 suffix

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>
2026-05-08 15:34:21 +02:00
geoHeil 5b1df788ef ci: tighten pre-commit guardrails (#3346)
* ci: tighten pre-commit guardrails

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: validate pre-commit guardrail changes

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: switch hook validation to prek

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: exempt active slim plan from max-lines

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: move max-lines config under github

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: fail on uncovered tach modules

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: ignore generated docs in max-lines check

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: clarify local validation tasks

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* docs: refine agent instructions

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: replace mypy with ty

(cherry picked from commit 382afbde8f00abfaeba95ea9c8e9cc603f27a2d9)
Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: replace justfile with makefile

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

---------

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>
2026-05-08 15:07:11 +02:00
Michele Dolfi 24af7f6249 docs(security): Add GitHub Private Vulnerability Reporting (#3416)
docs: update security processes

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
2026-05-08 10:00:29 +02:00
Christoph Auer aba7f155ae fix(client): Make submit_and_retrieve_many accept lazy iterable and yield (#3405)
* Remove eager materialization from docling-service batch submission

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* Update lock

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* Make convert_all evaluate Iterable input lazily, remove raises_on_error

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* Make convert_all use async generator like submit_and_retrieve_many

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* fix mypy fast check

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* upgrade packages

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* update test GT data

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* Update test GT from linux machine

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* Reset all GT test data and uv.lock

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

---------

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>
2026-05-07 18:15:26 +02:00
Panos Vagenas eb6e1e6609 fix(html): add redirect validation to image fetching (#3407)
Signed-off-by: Panos Vagenas <pva@zurich.ibm.com>
2026-05-07 08:12:06 +02:00
Panos Vagenas 2bb0fa67bd fix(html): improve local file path handling (#3400)
* fix: improve local file path handling

Signed-off-by: Panos Vagenas <pva@zurich.ibm.com>

* fix: improve Windows path handling

Signed-off-by: Panos Vagenas <pva@zurich.ibm.com>

* add backslash examples

Signed-off-by: Panos Vagenas <pva@zurich.ibm.com>

---------

Signed-off-by: Panos Vagenas <pva@zurich.ibm.com>
2026-05-06 16:34:17 +02:00
geoHeil 45c3d2b895 ci: share typecheck deps with PR fast checks (#3406)
Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>
2026-05-06 15:05:21 +02:00
yasqdb df5fbc3858 docs(readme): improve structure and clarity (#3366)
* Fix README formatting/issues

Signed-off-by: Yassine ben zineb <yassine.benzineb@medtech.tn>

* Fix README formatting/issues

Signed-off-by: Yassine ben zineb <yassine.benzineb@medtech.tn>

* Fix README formatting/issues

Signed-off-by: Yassine ben zineb <yassine.benzineb@medtech.tn>

* Fix README formatting/issues

Signed-off-by: Yassine ben zineb <yassine.benzineb@medtech.tn>

* Fix README formatting/issues

Signed-off-by: Yassine ben zineb <yassine.benzineb@medtech.tn>

* Quickstart + 'what is docling'

Signed-off-by: Yassine ben zineb <yassine.benzineb@medtech.tn>

* fix: line92

Signed-off-by: Yassine ben zineb <yassine.benzineb@medtech.tn>

---------

Signed-off-by: Yassine ben zineb <yassine.benzineb@medtech.tn>
Co-authored-by: Michele Dolfi <dol@zurich.ibm.com>
2026-05-06 14:06:32 +02:00
Peter El Hachem 336f942854 feat: add 2 stage model dowload from hf and call it for threaded layout model. (#3267)
* feat: add 2 stage model dowload from hf and call it from threaded_layout_vlm_pipeline

Signed-off-by: ElHachem02 <peterelhachem02@gmail.com>

* feat: cleanup extra space and import

Signed-off-by: ElHachem02 <peterelhachem02@gmail.com>

* fix: move demo to docs/examples/

Signed-off-by: ElHachem02 <peterelhachem02@gmail.com>

---------

Signed-off-by: ElHachem02 <peterelhachem02@gmail.com>
Co-authored-by: Michele Dolfi <dol@zurich.ibm.com>
2026-05-06 13:29:42 +02:00
Qiefan Jiang 6b3322ef85 fix(markdown): flush pending list/heading creation on CodeSpan to prevent RecursionError (#3361)
Signed-off-by: Qiefan Jiang <jiangqiefan@bytedance.com>
Co-authored-by: Michele Dolfi <dol@zurich.ibm.com>
2026-05-06 13:26:44 +02:00
geoHeil a4d6683d98 ci: run heavy examples only manually (#3392)
* ci: run heavy examples only manually

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: keep heavy examples label trigger

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

---------

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>
2026-05-06 10:53:22 +02:00
geoHeil 885873ea36 ci: avoid mutable PR merge refs in fast checks (#3397)
* ci: build stable PR fast-check merge tree

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* test: skip PR fast-check tree test on Windows

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

---------

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>
2026-05-06 10:33:16 +02:00
geoHeil fdca54caf7 ci: clarify Codecov coverage reporting (#3389)
Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>
2026-05-06 10:00:00 +02:00
github-actions[bot] 61c37a23a9 chore: bump version to 2.93.0 [skip ci] v2.93.0 2026-05-05 19:53:32 +00:00
Cesar Berrospi Ramis e00735dd59 fix(docx): fix OMML equation handling and improve type safety (#3381)
* fix(docx): handle missing chr attribute in groupChr OMML elements

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>

* fix(docx): escape spaces in OMML limit text for proper LaTeX rendering

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>

* fix(docx): fix inline equation reconstruction to prevent tag corruption

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>

* chore(docx): add type hints and docstrings to OMML module

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>

* fix(docx): fix genfrac formatting and eliminate grouping function warnings

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>

* fix(docx): handle unmapped characters in OMML % formatting

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>

---------

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>
2026-05-04 10:58:25 +02:00
EliSchwartz 24f2d148d9 feat(vlm): upgrade Granite Vision model to 4.1 for table + chart extraction (#3382)
* feat(table-structure): swap VLM model to granite-vision-4.1-4b

Updates GraniteVisionTableStructureModel to use the 4.1 model. The 4.1
weights are pre-merged, so merge_lora_adapters() is now hasattr-guarded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Eli Schwartz <eliyahu.schwartz@ibm.com>

* feat(chart-extraction): swap V4 VLM model to granite-vision-4.1-4b

Updates ChartExtractionModelGraniteVisionV4 to use the 4.1 model.
hasattr-guards the merge_lora_adapters() call since 4.1 weights are
pre-merged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Eli Schwartz <eliyahu.schwartz@ibm.com>

* docs(example): mention granite-vision-4.1-4b in table-structure example

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Eli Schwartz <eliyahu.schwartz@ibm.com>

* docs(catalog): update Granite Vision entry to 4.1-4b

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Eli Schwartz <eliyahu.schwartz@ibm.com>

* feat(chart-extraction): honor cuda_use_flash_attention2 in V4 loader

Mirrors the table-structure loader so ChartExtractionModelGraniteVisionV4
also passes _attn_implementation based on AcceleratorOptions. Without this
the chart model falls back to the transformers SDPA default, which can
hit cuDNN backend failures on some torch/cuDNN stacks while the table
model (which already passed the flag) runs cleanly.

Stores accelerator_options on the base class so subclasses can read it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Eli Schwartz <eliyahu.schwartz@ibm.com>

* fix(model-downloader): update Granite Vision log message to 4.1

The log message in download_models still mentioned "Granite Vision 4.0"
after the model swap. Correct it to match the current model version.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Eli Schwartz <eliyahu.schwartz@ibm.com>

* fix(chart-extraction): fall back to bare CSV when V4 model omits ```csv``` fence

granite-vision-4.1-4b sometimes emits raw CSV without a ```csv``` code fence
for the <chart2csv> prompt, which caused _extract_csv_to_dataframe to raise
ValueError and drop the chart's tabular_chart metadata. Mirror the tolerant
parsing already used by the v3 class: prefer a fenced block, otherwise strip
any stray backtick prefix/suffix and parse the text as-is.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Eli Schwartz <eliyahu.schwartz@ibm.com>

---------

Signed-off-by: Eli Schwartz <eliyahu.schwartz@ibm.com>
Co-authored-by: Eli Schwartz <eliyahu.schwartz@ibm.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 08:36:08 +02:00
geoHeil eb4724ee4c ci: prototype tach-based modular skipping (#3333)
* ci: prototype tach-based modular skipping

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: modularize ubuntu setup and refine gating

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: adopt metaxy-inspired governance helpers

- replace custom aggregate check with re-actors/alls-green

- set FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 on every workflow

- keep PR concurrency alive when the graphite:merge label is present

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: tune checks and pin action versions

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: split CI suites and heavy examples

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* DCO Remediation Commit for Georg Heiler <georg.kf.heiler@gmail.com>

I, Georg Heiler <georg.kf.heiler@gmail.com>, hereby add my Signed-off-by to this commit: ecaa4777886157d5c2a7b3893c3a820983089dbf
I, Georg Heiler <georg.kf.heiler@gmail.com>, hereby add my Signed-off-by to this commit: d15416f3ca94ac97af2a8317cd6404208db9d896

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: sharpen tach graph and per-suite path filters

- Split docling.pipeline into per-pipeline tach modules
  (asr, vlm, standard_pdf, threaded_standard_pdf, legacy_standard_pdf,
  extraction_vlm, base, base_extraction, simple) so pytest --tach-base
  impact analysis can attribute changes to a specific pipeline rather
  than the whole package.
- Split the asr- and vlm-specific docling.datamodel option files
  (asr_model_specs, pipeline_options_asr_model, vlm_engine_options,
  vlm_model_specs, pipeline_options_vlm_model, layout_model_specs,
  stage_model_specs, backend_options) into their own tach modules so
  a narrow spec/options change no longer marks the full datamodel as
  impacted.
- Narrow the per-suite pipeline path filters in checks.yml to the
  concrete pipeline files relevant to each suite, so editing
  vlm_pipeline.py only triggers the vlm matrix cell and editing
  asr_pipeline.py only the asr one.
- Rekey the model cache in setup-ubuntu-ci to include runner.os and
  hashFiles(uv.lock, pyproject.toml), with ordered restore-keys
  fallbacks so a lockfile bump no longer silently stales the cache.

Metaxy parity note: layered tach enforcement (layer = "...") is
blocked by existing backend<->datamodel and utils<->stages cycles;
depot runners, nox dynamic matrices, devenv/nix, dprint and ty are
not applicable to docling's stack. All pinned action SHAs are on
their latest release as of this commit.

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: introduce pipeline and orchestration tach layers

Earlier notes claimed layers were blocked. That was only true for the
cyclic core (backend<->datamodel, utils<->stages). The boundary
*above* core is clean:

- No module under docling/backend, docling/datamodel, docling/models,
  docling/utils, docling/exceptions, or docling/chunking imports
  anything from docling.pipeline (verified by grep).
- No module anywhere in docling/ imports from docling.cli,
  docling.document_converter, docling.document_extractor, or
  docling.service_client (also verified).

So we can introduce two real layers on top of the cyclic core:

- "pipeline"      — docling.pipeline and all nine concrete pipelines
                     (base, simple, base_extraction, asr, vlm,
                     extraction_vlm, standard_pdf,
                     threaded_standard_pdf, legacy_standard_pdf).
- "orchestration" — docling.cli, docling.document_converter,
                     docling.document_extractor, and
                     docling.experimental.pipeline.

Unlayered modules stay "below" both layers (tach allows them to be
depended on freely) and continue to carry the declared-but-cyclic
backend<->datamodel and utils<->stages edges.

A VLM-only layer was explored but rejected: only
docling.pipeline.vlm_pipeline and docling.pipeline.extraction_vlm_pipeline
could be cleanly layered as "vlm", because the matching datamodel
options (pipeline_options_vlm_model, vlm_engine_options,
vlm_model_specs) and model stages (vlm_convert, vlm_pipeline_models)
sit inside the datamodel/models cycle and cannot be promoted to a
higher layer without first breaking that cycle. Layering only the
two pipeline files is not worth the extra config.

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: expand tach layers to entrypoints/pipeline/models/core

Follow-up to the two-layer attempt. After verifying via grep that
nothing in datamodel/utils/backend imports from
docling.models.{extraction,factories,plugins,vlm_pipeline_models}
or from the "upper" stages (page_assemble, page_preprocessing,
reading_order, picture_description, vlm_convert), those nine
modules can be promoted out of the cyclic core into a dedicated
"models" layer.

The resulting order (highest first):

- entrypoints — cli, document_converter, document_extractor,
                experimental.pipeline
- pipeline    — docling.pipeline + the nine concrete pipelines
- models      — model factories, extraction, plugins,
                vlm_pipeline_models, and the five "upper" stages
- core        — datamodel*, backend*, utils, exceptions, chunking,
                models (base), models.utils, inference_engines.*,
                the six "core stages" that utils cycles with
                (chart_extraction, code_formula, layout, ocr,
                picture_classifier, table_structure), and the
                experimental.* and service_client modules

Rename the previous "orchestration" layer to "entrypoints" to
match the common docling vocabulary. Every module now carries an
explicit layer tag instead of relying on implicit unlayered
behaviour, so future additions must pick a layer deliberately.

A VLM layer, a stand-alone inference-engines layer, and separating
datamodel from backend all remain blocked by the bidirectional
backend<->datamodel and utils<->core-stages edges; those need a
code-level refactor first.

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: refine tach client and foundation layers

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: add optional windows and macos smoke lanes

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: normalize reusable workflow boolean inputs

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: replace external all-green action

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: use org-allowed setup-uv action

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: install compiler toolchain for ML tests

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* DCO Remediation Commit for Georg Heiler <georg.kf.heiler@gmail.com>

I, Georg Heiler <georg.kf.heiler@gmail.com>, hereby add my Signed-off-by to this commit: bb714afb42cd1b29ab073a7f59cc72874ff2fdcd

I, Georg Heiler <georg.kf.heiler@gmail.com>, hereby add my Signed-off-by to this commit: a1f2761da8f72bfed636bd571ebf77b42c8771b6

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* DCO Remediation Commit for Georg Heiler <georg.kf.heiler@gmail.com>

I, Georg Heiler <georg.kf.heiler@gmail.com>, hereby add my Signed-off-by to this commit: cc6551b54c5bf4815ae9cd57cf43a98928a74be0

I, Georg Heiler <georg.kf.heiler@gmail.com>, hereby add my Signed-off-by to this commit: b21b0e7ca12b552dbdd54fac1bda113719c286f1

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: simplify ML pytest suite patterns

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: gate heavy examples on label, add job timeouts

- ci-heavy-examples: run only on main push, schedule, workflow_dispatch,
  or when a PR is labeled tests:full / tests:heavy-examples. Drops the
  path-based auto-trigger so that common edits to pyproject.toml,
  uv.lock, or .github/actions do not kick off the 45-60min matrix on
  every PR push. Collapses the changes job into a job-level if gate and
  adds timeout-minutes: 90.
- checks.yml: add timeout-minutes to every job so stuck runners cannot
  burn the full 6h default.

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: tolerate cancelled allowed-skip jobs in check aggregator

Intentional cancellations (manual cancel, concurrency replacement) on
jobs that are already in ALLOWED_SKIPS should not mark the overall
workflow red. Treat `cancelled` the same as `skipped` when the job is
listed as an allowed skip; any unexpected cancellation of a required
job still fails.

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* docs: make minimal vlm example portable

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* DCO Remediation Commit for Georg Heiler <georg.kf.heiler@gmail.com>

I, Georg Heiler <georg.kf.heiler@gmail.com>, hereby add my Signed-off-by to this commit: 2135051da3ed73d4b8a9130f584f40b56155af1a

I, Georg Heiler <georg.kf.heiler@gmail.com>, hereby add my Signed-off-by to this commit: 4f6d1d7960f7418d0cde6425ae61538da84fda40

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: install workspace packages in CI syncs

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* DCO Remediation Commit for Georg Heiler <georg.kf.heiler@gmail.com>

I, Georg Heiler <georg.kf.heiler@gmail.com>, hereby add my Signed-off-by to this commit: 492fa9883d4de6d98ebcb40fa863eafe2facff3c

I, Georg Heiler <georg.kf.heiler@gmail.com>, hereby add my Signed-off-by to this commit: 3eefae71643f9ca3df0264690c0c6eb1f67f06f1

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* DCO Remediation Commit for Georg Heiler <georg.kf.heiler@gmail.com>

I, Georg Heiler <georg.kf.heiler@gmail.com>, hereby add my Signed-off-by to this commit: fe8c9689a0ee94f36eb826da8e2177ef87404f5e

I, Georg Heiler <georg.kf.heiler@gmail.com>, hereby add my Signed-off-by to this commit: eabdd24a6734ec873cdaac857718aef2473677e7

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: remove unused graphite concurrency exception

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: document test labels and gate cross-platform lanes

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: select ml tests with pytest markers

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: fix marker selector typing

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: simplify ml suite scheduling

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: mark cross-platform smoke tests

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: reuse test trigger for ml matrix

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: tighten full ci aggregation

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: share required job result check

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

---------

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 14:15:35 +02:00
geoHeil 05e0a4daa4 ci: add stable required status checks (#3387)
* ci: add stable required status checks

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: simplify status sentinel checks

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

---------

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>
2026-04-30 12:13:41 +02:00
geoHeil 0c85938e12 ci: diff PR fast checks against merge ref (#3383)
Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>
2026-04-29 15:17:51 +02:00
geoHeil 41e9fa7886 ci: implement phase 1 path-based workflow skipping (#3332)
* ci: add phase 1 path-based workflow skipping

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: add fast pull_request_target lint checks

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: keep pr fast checks cheap

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: expand full matrix triggers

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: enable same-repo and merge queue checks

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: harden pull_request_target fetch inputs

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: address phase 1 workflow review

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: grant reusable checks permissions

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: temporarily enable pr fast checks validation

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: allow first run of pr fast checks

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: load pr fast check script for first validation

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: format pr fast check script

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: guard temporary pr fast check script fallback

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: use pr metadata for temporary fast check validation

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: remove temporary pr fast checks trigger

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: disable duplicate pull request runs

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: run fast pr checks without path trigger filter

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: add job timeouts in checks.yml

Cap every job so a stuck runner cannot burn the 6h default. Limits:
changes=5, lint=20, run-tests-1/2=45, run-examples=60,
test-pip-install-*=30, build/test-package=15.

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: restore pull request workflow triggers

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

* ci: run lint on pull requests

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>

---------

Signed-off-by: Georg Heiler <georg.kf.heiler@gmail.com>
2026-04-29 10:55:27 +02:00
github-actions[bot] 80f81b2799 chore: bump version to 2.92.0 [skip ci] v2.92.0 2026-04-29 07:38:26 +00:00
pateltejas 72942486ff fix(pptx): skip malformed picture shapes instead of aborting conversion (#3372)
* fix(pptx): skip malformed picture shapes instead of aborting conversion

MsPowerpointDocumentBackend._handle_pictures reads embedded image bytes via python-pptx's shape.image accessor. On PPTX files with slightly malformed <p:pic> shapes, shape.image raises three exceptions that the existing (UnidentifiedImageError, OSError, ValueError) clause does not catch, so one bad picture aborts conversion of the entire presentation:

- InvalidXmlError when <p:blipFill> is missing
- KeyError when <a:blip r:embed> points to an unknown relationship
- AttributeError when the embedded part's content-type isn't an image

These files open normally in Keynote and Google Drive, so the backend should handle them as gracefully as it already handles truncated or unreadable image payloads.

This follows the same pattern as #2914, which extended the same except tuple with ValueError to handle linked (external) image references. The three cases above are the remaining shape.image failure modes that still escape.

Extend the except tuple to cover the three cases and log the same warning used for other unreadable images, leaving the rest of the presentation to convert normally. Add a regression fixture with one malformed picture per failure mode plus a focused test.

Fixes #3371

Signed-off-by: pateltejas <tejas226@hotmail.com>

* refactor(pptx): use warnings.warn for malformed picture skips

Address PR review feedback: use Python's warnings module with UserWarning to signal the skip to callers instead of logging.Logger.warning, matching the pattern used in msword_backend for "Skipping external image reference". This makes the skip visible via standard warning filters and catchable in tests.

Update the regression test to assert the warning is emitted via pytest.warns, which also suppresses the message during the test run so it doesn't clutter suite output.

Signed-off-by: pateltejas <tejas226@hotmail.com>

---------

Signed-off-by: pateltejas <tejas226@hotmail.com>
2026-04-29 08:29:08 +02:00
Michele Dolfi 2be2c38be9 chore: refactor release script to use Python regex for dependency updates (#3379)
* chore: fix and make release script more generic

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* re-enable git operations

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

---------

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
2026-04-29 08:28:28 +02:00
Michele Dolfi 8c26f6021f chore: fix docling extras (#3376)
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
2026-04-28 19:42:12 +02:00
Michele Dolfi 2b27739e57 refactor: allow import of docling datamodel without transformers (#3375)
* refactor: allow import of docling datamodel without transformers

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* apply formatting

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* factor out the safe_version utils

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

---------

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
2026-04-28 17:21:57 +02:00
Nikos Livathinos 8b67fae687 feat: Extend the kserve-triton OCR model to have multi-lingual support (#3368)
* chore: Update .gitignore with local dirs of AI agents

Signed-off-by: Nikos Livathinos <nli@zurich.ibm.com>

* feat: Extend KserveV2OcrModel and kserve_v2_grpc.py to support the new version of Triton-RapidOCR
model where the language is the first input parameter:
- The gRPC client has been extended to encode BYTE input, needed for String types.
- An additional test ensures to have proper BYTE encoding/decoding.

Signed-off-by: Nikos Livathinos <nli@zurich.ibm.com>

* feat: Add test for the KServe-Triton integration: WIP
- The test currently supports only the gRPC KServe client
- Extend the ground-truth test data.

Signed-off-by: Nikos Livathinos <nli@zurich.ibm.com>

* fix: Simplify code in kserve test

Signed-off-by: Nikos Livathinos <nli@zurich.ibm.com>

* chore: Rename test file

Signed-off-by: Nikos Livathinos <nli@zurich.ibm.com>

* feat: Extend the kserve_v2 implementation to support binary data in the HTTP interface.
- Decouple functions for binary encoding/decoding inside the kserve_v2_utils.py and share for both HTTP and gRPC.
- Introduce use_binary_data init parameter in KserveV2OptionsMixin
- Improve tests

Signed-off-by: Nikos Livathinos <nli@zurich.ibm.com>

* fix: Put back the field grpc_use_binary_data of KserveV2OptionsMixin as a deprecated alias to use_binary_data

Signed-off-by: Nikos Livathinos <nli@zurich.ibm.com>

---------

Signed-off-by: Nikos Livathinos <nli@zurich.ibm.com>
2026-04-28 16:00:57 +02:00
Cesar Berrospi Ramis 3df80e7f46 fix(docx): OMML conversion failures for unsupported limit functions (#3359)
* fix(docx): handle unsupported limit functions gracefully in OMML conversion

Replace RuntimeError with graceful fallback for unknown limit functions in do_limlow().
Add argmax and argmin to LIM_FUNC dictionary for proper LaTeX rendering.
Fixes conversion failures when Word documents contain mathematical operators
not previously supported in the limit function dictionary.

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>

* test(docx): regenerate ground truth files

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>

---------

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>
2026-04-28 14:43:24 +02:00
Cesar Berrospi Ramis c455a65e36 feat(docx): add checkbox parsing support (#3349)
* feat(docx): add checkbox parsing support to MsWordDocumentBackend

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>

* refactor(docx): remove duplicate code in text element handling

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>

* docs(docx): update checkbox method docstrings

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>

* refactor(docx): use self._BLIP_NAMESPACES for w14 namespace in checkbox methods

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>

---------

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>
2026-04-28 14:38:43 +02:00
Cesar Berrospi Ramis 987bb0e585 refactor: fix mutable default arguments in backend __init__ methods (#3354)
Replace mutable default arguments (e.g., `options=SomeOptions()`) with
`None` and initialize inside functions to prevent shared state issues.
Affects 15 backend classes across the codebase.

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>
Co-authored-by: Panos Vagenas <pva@zurich.ibm.com>
2026-04-28 10:58:54 +02:00
Aatrey Sahay f2c03edb30 fix(html):preserve fragment-only anchor links during path resolution (#3262)
fix(html): preserve fragment-only anchor links during path resolution

Fragment-only hrefs (e.g. href="#section1") were resolved as filesystem
paths when source_uri was set, breaking internal document navigation.

Add '#' to the skip-resolution prefixes in _resolve_relative_path() so
fragment links pass through unchanged.

Partially addresses #2929

Signed-off-by: aatrey56 <aatrey.sahay@gmail.com>
2026-04-28 10:28:23 +02:00
Michele Dolfi ed32c5e993 feat: Introduce modular docling-slim package (#3285)
* plans folder structure

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* initial plan

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* updated plan

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* restructure repo for docling and docling-slim

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* transpose package structures

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* add all-packages

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* updated  lock and deps

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* align deps

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* more lock like main

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* more locked pinning

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* rename extras

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* add simple README for docling-slim

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* fix scikit-image issue

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* add readme placeholder

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* add all extras in package test

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* cli in docling-slim

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* apply formatting

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* fix testing package

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* override grpcio in no-header test

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* update lock

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* update package description

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* updated extras

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* fix publish scripts

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

* update package test

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>

---------

Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
2026-04-24 15:14:57 +02:00
Christoph Auer a6a37ca895 fix: Make VLLM model_impl configurable (#3358)
* Add ResponseFormat.DOCLANG and parsing branch in VLM pipeline

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* fix: Remove bogus preamble from VLM chat template

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* fix: Add include_stop_str_in_output in allowed VLLM sampling params

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* allow vllm model_impl to be defined

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* make VLLM model_impl default to auto

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

---------

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>
2026-04-24 09:53:23 +02:00
Christoph Auer 0f6f8d0bcd feat: Add ResponseFormat.DOCLANG and parsing branch in VLM pipeline (#3350)
* Add ResponseFormat.DOCLANG and parsing branch in VLM pipeline

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* fix: Remove bogus preamble from VLM chat template

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* fix: Add include_stop_str_in_output in allowed VLLM sampling params

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

---------

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>
2026-04-24 08:36:30 +02:00
github-actions[bot] 188b6a192c chore: bump version to 2.91.0 [skip ci] v2.91.0 2026-04-23 09:29:36 +00:00
Cesar Berrospi Ramis c1dbac22c7 fix: strengthen input validation for METS‑GBS processing (#3336)
* fix: prevent XXE and decompression bomb in METS-GBS processing

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>

* refactor: enforce resource limits for METS-GBS tar extraction

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>

---------

Signed-off-by: Cesar Berrospi Ramis <ceb@zurich.ibm.com>
2026-04-23 10:17:39 +02:00
Nikos Livathinos 5e161ac185 fix: EasyOCR model downloading (#3339)
Signed-off-by: Nikos Livathinos <nli@zurich.ibm.com>
2026-04-23 09:27:54 +02:00
Christoph Auer c190ba2636 fix(vlm): Remove bogus preamble from VLM chat template (#3351)
* fix: Remove bogus preamble from VLM chat template

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

* fix: Add include_stop_str_in_output in allowed VLLM sampling params

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>

---------

Signed-off-by: Christoph Auer <cau@zurich.ibm.com>
2026-04-22 21:42:38 +02:00