• Java 99.3%
  • Kotlin 0.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
dependabot[bot] 10ff5f6c31
chore(deps): Bump gradle-wrapper from 9.8.1 to 9.8.2 (#772)
Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.8.1 to 9.8.2.
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](https://github.com/gradle/gradle/compare/v9.8.1...v9.8.2)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-11-04 20:44:55 +00:00
.github chore(deps): Bump actions/setup-python from 7.0.0 to 7.1.0 (#769) 2026-10-28 19:10:01 +00:00
.spotless feat: configure Eclipse formatter for Spotless (#571) 2026-08-05 09:12:05 -04:00
buildSrc feat: ship GraalVM Native Image metadata (#681) 2026-09-14 12:07:48 -04:00
docling-bom feat: add Maven BOM module for aligned dependency management (#482) 2026-05-04 17:01:24 +00:00
docling-core chore(deps): bump lombok to 1.18.48 and jacoco to 0.8.15 (#725) 2026-10-01 21:35:23 +00:00
docling-serve feat(api): expose PDF heading hierarchy options in ConvertDocumentOptions (#756) 2026-10-22 17:09:42 +00:00
docling-testcontainers chore: bump doclling serve testcontainer to 1.35.0 (#702) 2026-09-24 22:07:50 -07:00
docling-testing feat: ship GraalVM Native Image metadata (#681) 2026-09-14 12:07:48 -04:00
docs docs: Update docling-serve compatibility table (from Version tests run # 75) 2026-11-02 04:30:25 +00:00
gradle chore(deps): Bump gradle-wrapper from 9.8.1 to 9.8.2 (#772) 2026-11-04 20:44:55 +00:00
test-report-aggregation chore: add java 27 to build (#712) 2026-10-02 13:25:23 +00:00
.all-contributorsrc docs: add Krambamboli as a contributor for ideas (#758) 2026-10-22 12:10:59 -04:00
.editorconfig ci: set up Spotless linting in CI (#351) (#366) 2026-03-02 16:31:40 +00:00
.gitignore fix(core): keep required empty strings when serializing DoclingDocument (#723) 2026-10-01 15:21:25 -04:00
CLAUDE.md feat(api)!: replace DoclingServeApiBuilderFactory with DoclingServeApiProvider (#696) 2026-09-23 23:31:36 +00:00
CODE_OF_CONDUCT.md Create governance artifacts 2025-10-15 14:17:43 -04:00
CONTRIBUTING.md ci: set up Spotless linting in CI (#351) (#366) 2026-03-02 16:31:40 +00:00
dco.txt Create governance artifacts 2025-10-15 14:17:43 -04:00
gradle.properties feat: Implement the clear and task APIs (#192) 2025-12-11 09:35:11 -05:00
gradlew chore(deps): Bump gradle-wrapper from 9.5.1 to 9.6.0 (#560) 2026-06-25 14:19:14 -04:00
gradlew.bat chore(deps): Bump gradle-wrapper from 9.7.1 to 9.8.1 (#744) 2026-10-20 18:11:31 +00:00
jreleaser.yml feat: provide GitHub attestations during release (#640) 2026-09-17 11:26:07 -04:00
LICENSE Initial commit 2025-10-10 14:57:06 +02:00
README.md docs: add Krambamboli as a contributor for ideas (#758) 2026-10-22 12:10:59 -04:00
SECURITY.md docs: Add initial SECURITY.md (#31) 2025-10-27 21:08:12 -04:00
settings.gradle.kts feat: ship GraalVM Native Image metadata (#681) 2026-09-14 12:07:48 -04:00

Welcome to the Docling Java Project!

Docling Java

This is the repository for Docling Java, a Java API for using Docling.

Docs docling-core version docling-serve-api version docling-serve-client version docling-testcontainers version License MIT codecov Discord OpenSSF Best Practices

Docling simplifies document processing, parsing diverse formats, including advanced PDF understanding, and providing seamless integrations with the Generative AI ecosystem.

Features

  • 🗂️ Parsing of multiple document formats incl. PDF, DOCX, PPTX, XLSX, HTML, WAV, MP3, VTT, images (PNG, TIFF, JPEG, ...), and more
  • 📑 Advanced PDF understanding incl. page layout, reading order, table structure, code, formulas, image classification, and more
  • 🧬 Unified, expressive DoclingDocument representation format
  • ↪️ Various export formats and options, including Markdown, HTML, DocTags and lossless JSON
  • 🔒 Local execution capabilities for sensitive data and air-gapped environments
  • 🤖 Plug-and-play integrations including LangChain4j
  • 🔍 Extensive OCR support for scanned PDFs and images
  • 👓 Support of several Visual Language Models (GraniteDocling)
  • 🎙️ Audio support with Automatic Speech Recognition (ASR) models

Documentation

See the documentation for complete information on the various artifacts that are provided by this project.

Artifacts

This project provides the following artifacts:

Getting started

Use DoclingServeApi.convertSource() to convert individual documents (make sure both docling-serve-api and docling-serve-client are on your classpath).

For example:

import ai.docling.serve.api.DoclingServeApi;
import ai.docling.serve.api.convert.request.ConvertDocumentRequest;
import ai.docling.serve.api.convert.request.source.HttpSource;
import ai.docling.serve.api.convert.response.InBodyConvertDocumentResponse;

DoclingServeApi doclingServeApi = DoclingServeApi.builder()
    .baseUrl("<location of docling serve instance>")
    .build();

ConvertDocumentRequest request = ConvertDocumentRequest.builder()
    .source(
        HttpSource.builder()
            .url(URI.create("https://arxiv.org/pdf/2408.09869"))
            .build()
    )
    .build();

InBodyConvertDocumentResponse response = (InBodyConvertDocumentResponse) doclingServeApi.convertSource(request);
System.out.println(response.getDocument().getMarkdownContent());

If you're unsure of the concrete type returned by the convert API, you can handle it dynamically using the getResponseType() method:

import ai.docling.serve.api.convert.response.ResponseType;

// ... your code to create and configure the request ...

var result = doclingServeApi.convertSource(request);

switch(result.getResponseType()) {
    case ResponseType.IN_BODY -> // Response is InBodyConvertDocumentResponse
    case ResponseType.ZIP_ARCHIVE -> // Response is ZipArchiveConvertDocumentResponse
    case ResponseType.PRE_SIGNED_URL -> // Response is PreSignedUrlConvertDocumentResponse
    case ResponseType.PRE_SIGNED_URL_RESPONSE -> // Response is PreSignedUrlConvertResponse (with per-document artifact download URLs)
}

More usage information is available in the docs.

Get help and support

Please feel free to connect with us using the discussion section.

Contributing

Please read Contributing to Docling Java for details.

License

The Docling codebase is under MIT license. For individual model usage, please refer to the model licenses found in the original packages.

IBM ❤️ Open Source AI

The project was started by the AI for knowledge team at IBM Research Zurich.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Eric Deandrea
Eric Deandrea

💻 🖋 📖 🤔 🚇 🚧 📆 ⚠️ 👀
Thomas Vitale
Thomas Vitale

💻 🖋 📖 🤔 🚇 🚧 📆 ⚠️ 👀
Alex Soto
Alex Soto

🤔 📆
Cesar Berrospi Ramis
Cesar Berrospi Ramis

🤔
Michele Dolfi
Michele Dolfi

🎨 🤔 🚇 💬
Andrea Cosentino
Andrea Cosentino

🎨 📣 🤔 💻 📖
jmb-streamsets
jmb-streamsets

🤔 🎨
insectengine
insectengine

🖋 🎨
Maxim Lysak
Maxim Lysak

🖋 🎨
warnulf
warnulf

🐛
Kristian Rickert
Kristian Rickert

💻 🤔 📖 ⚠️
Kaleab A.
Kaleab A.

💻 📖
Mohammed Faisal
Mohammed Faisal

💻 ⚠️
Arpan Chakraborty
Arpan Chakraborty

💻 ⚠️ 🖋 📖
Rohan Kurian
Rohan Kurian

💻 📖 🤔 🔧 ⚠️ 🚇
Nelson Baby
Nelson Baby

💻
dan-m62
dan-m62

💻 🤔
Roman Kudryashov
Roman Kudryashov

🐛
Margi
Margi

⚠️
Sean Fitzpatrick
Sean Fitzpatrick

⚠️
Sweta Kumari
Sweta Kumari

🚧
Ashfaq
Ashfaq

💻 🐛
Naman-Gururani
Naman-Gururani

💻
Olischn
Olischn

🤔

This project follows the all-contributors specification. Contributions of any kind are welcome!