DEV Community

Alain Airom (Ayrom)
Alain Airom (Ayrom)

Posted on

Update on Docling Java

News and updates on Docling Java!

Introduction

It’s been over a year since I last dove into the Docling Java implementation — and since I’m not a native Java developer, it’s admittedly slipped under my radar more than it should. That’s a blind spot I’m ready to fix (or not 🤓).

For anyone following the project, we’ve seen Docling’s meteoric rise since the begining and now being donated to the Linux Foundation by IBM Research. The pace is relentless; it feels like we’re seeing major enhancements or fresh features almost every other day.

The Java side of the house is no exception. With a fresh update landing just last week, it’s the perfect time to give it a second look. If you’re building in Java, here’s why this deserves a spot in your stack.


Docling-Java (direct from GitHub Excerpt)

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

Hands-on Docling Java

If you’ve been hesitant to dive into the Python ecosystem, now is the perfect time to get your hands dirty. The latest Java implementation makes entry incredibly smooth: the samples are well-documented, the artifact guides are thorough, and the actual integration is surprisingly straightforward. No more excuses — it’s time to build.

Artifacts (Excerpt of GitHub)

This project provides the following artifacts:


Getting started

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

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());
Enter fullscreen mode Exit fullscreen mode

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
}
Enter fullscreen mode Exit fullscreen mode

Integration with SDLC / ADLC

If you’re a fan of using Claude for coding, there’s a specific Markdown format available that provides clear implementation guidelines. It’s a perfect fit for an assistant like IBM Bob to ingest also — in fact, putting that to the test is at the top of my “next steps” list.


Conclusion

Ultimately, whether you’re a Java purist or looking to expand your AI toolkit beyond Python, the momentum behind Docling is impossible to ignore. Between the refreshed Java implementation and the specialized tooling for Claude and Bob, the barriers to entry have never been lower. It’s a fast-moving ecosystem, and with the latest updates making high-performance document parsing more accessible than ever, there’s no better time to jump in and start building.

And last but not least… a great thank to the Docling-Java project contributors 👏

>>> Thanks for reading <<<

Links

Top comments (0)