# GitHub - docling-project/docling: Get your documents ready for gen AI

GitHub - docling-project/docling: Get your documents ready for gen AI
===============
                                             

[Skip to content](https://github.com/docling-project/docling?tab=readme-ov-file#start-of-content)   

Navigation Menu
---------------

Toggle navigation

[](https://github.com/)

[Sign in](https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fdocling-project%2Fdocling%3Ftab%3Dreadme-ov-file)

*   Product
    
    *   [GitHub Copilot Write better code with AI](https://github.com/features/copilot)
    *   [GitHub Advanced Security Find and fix vulnerabilities](https://github.com/security/advanced-security)
    *   [Actions Automate any workflow](https://github.com/features/actions)
    *   [Codespaces Instant dev environments](https://github.com/features/codespaces)
    *   [Issues Plan and track work](https://github.com/features/issues)
    *   [Code Review Manage code changes](https://github.com/features/code-review)
    *   [Discussions Collaborate outside of code](https://github.com/features/discussions)
    *   [Code Search Find more, search less](https://github.com/features/code-search)
    
    Explore
    
    *   [Why GitHub](https://github.com/why-github)
    *   [All features](https://github.com/features)
    *   [Documentation](https://docs.github.com/)
    *   [GitHub Skills](https://skills.github.com/)
    *   [Blog](https://github.blog/)
    
*   Solutions
    
    By company size
    
    *   [Enterprises](https://github.com/enterprise)
    *   [Small and medium teams](https://github.com/team)
    *   [Startups](https://github.com/enterprise/startups)
    *   [Nonprofits](https://github.com/solutions/industry/nonprofits)
    
    By use case
    
    *   [DevSecOps](https://github.com/solutions/use-case/devsecops)
    *   [DevOps](https://github.com/solutions/use-case/devops)
    *   [CI/CD](https://github.com/solutions/use-case/ci-cd)
    *   [View all use cases](https://github.com/solutions/use-case)
    
    By industry
    
    *   [Healthcare](https://github.com/solutions/industry/healthcare)
    *   [Financial services](https://github.com/solutions/industry/financial-services)
    *   [Manufacturing](https://github.com/solutions/industry/manufacturing)
    *   [Government](https://github.com/solutions/industry/government)
    *   [View all industries](https://github.com/solutions/industry)
    
    [View all solutions](https://github.com/solutions)
    
*   Resources
    
    Topics
    
    *   [AI](https://github.com/resources/articles/ai)
    *   [DevOps](https://github.com/resources/articles/devops)
    *   [Security](https://github.com/resources/articles/security)
    *   [Software Development](https://github.com/resources/articles/software-development)
    *   [View all](https://github.com/resources/articles)
    
    Explore
    
    *   [Learning Pathways](https://resources.github.com/learn/pathways)
    *   [Events & Webinars](https://resources.github.com/)
    *   [Ebooks & Whitepapers](https://github.com/resources/whitepapers)
    *   [Customer Stories](https://github.com/customer-stories)
    *   [Partners](https://partner.github.com/)
    *   [Executive Insights](https://github.com/solutions/executive-insights)
    
*   Open Source
    
    *   [GitHub Sponsors Fund open source developers](https://github.com/sponsors)
    
    *   [The ReadME Project GitHub community articles](https://github.com/readme)
    
    Repositories
    
    *   [Topics](https://github.com/topics)
    *   [Trending](https://github.com/trending)
    *   [Collections](https://github.com/collections)
    
*   Enterprise
    
    *   [Enterprise platform AI-powered developer platform](https://github.com/enterprise)
    
    Available add-ons
    
    *   [GitHub Advanced Security Enterprise-grade security features](https://github.com/security/advanced-security)
    *   [Copilot for business Enterprise-grade AI features](https://github.com/features/copilot/copilot-business)
    *   [Premium Support Enterprise-grade 24/7 support](https://github.com/premium-support)
    
*   [Pricing](https://github.com/pricing)

Search or jump to...

Search code, repositories, users, issues, pull requests...
==========================================================

Search

Clear

[Search syntax tips](https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax)

Provide feedback
================

We read every piece of feedback, and take your input very seriously.

 Include my email address so I can be contacted

Cancel Submit feedback

Saved searches
==============

Use saved searches to filter your results more quickly
------------------------------------------------------

Name  

Query 

To see all available qualifiers, see our [documentation](https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax).

Cancel Create saved search

[Sign in](https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fdocling-project%2Fdocling%3Ftab%3Dreadme-ov-file)

[Sign up](https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&source=header-repo&source_repo=docling-project%2Fdocling) Reseting focus

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

{{ message }}

[docling-project](https://github.com/docling-project) / **[docling](https://github.com/docling-project/docling)** Public

*   [Notifications](https://github.com/login?return_to=%2Fdocling-project%2Fdocling) You must be signed in to change notification settings
*   [Fork 1.8k](https://github.com/login?return_to=%2Fdocling-project%2Fdocling)
*   [Star 28.7k](https://github.com/login?return_to=%2Fdocling-project%2Fdocling)
    

Get your documents ready for gen AI

[docling-project.github.io/docling](https://docling-project.github.io/docling "https://docling-project.github.io/docling")

### License

[MIT license](https://github.com/docling-project/docling/blob/main/LICENSE)

[28.7k stars](https://github.com/docling-project/docling/stargazers) [1.8k forks](https://github.com/docling-project/docling/forks) [Branches](https://github.com/docling-project/docling/branches) [Tags](https://github.com/docling-project/docling/tags) [Activity](https://github.com/docling-project/docling/activity)

[Star](https://github.com/login?return_to=%2Fdocling-project%2Fdocling)

[Notifications](https://github.com/login?return_to=%2Fdocling-project%2Fdocling) You must be signed in to change notification settings

*   [Code](https://github.com/docling-project/docling)
*   [Issues 323](https://github.com/docling-project/docling/issues)
*   [Pull requests 16](https://github.com/docling-project/docling/pulls)
*   [Discussions](https://github.com/docling-project/docling/discussions)
*   [Actions](https://github.com/docling-project/docling/actions)
*   [Projects 0](https://github.com/docling-project/docling/projects)
*   [Security](https://github.com/docling-project/docling/security)
*   [Insights](https://github.com/docling-project/docling/pulse)

Additional navigation options

*   [Code](https://github.com/docling-project/docling)
*   [Issues](https://github.com/docling-project/docling/issues)
*   [Pull requests](https://github.com/docling-project/docling/pulls)
*   [Discussions](https://github.com/docling-project/docling/discussions)
*   [Actions](https://github.com/docling-project/docling/actions)
*   [Projects](https://github.com/docling-project/docling/projects)
*   [Security](https://github.com/docling-project/docling/security)
*   [Insights](https://github.com/docling-project/docling/pulse)

docling-project/docling
=======================

  

 main

[**26** Branches](https://github.com/docling-project/docling/branches)[**95** Tags](https://github.com/docling-project/docling/tags)

[](https://github.com/docling-project/docling/branches)[](https://github.com/docling-project/docling/tags)

Go to file

Code

Folders and files
-----------------

| Name | Name | 
Last commit message

 | 

Last commit date

 |
| --- | --- | --- | --- |
| 

Latest commit
-------------

[![Image 17: dolfim-ibm](https://avatars.githubusercontent.com/u/97102151?v=4&size=40)](https://github.com/dolfim-ibm)[dolfim-ibm](https://github.com/docling-project/docling/commits?author=dolfim-ibm)

[fix: usage of hashlib for FIPS (](https://github.com/docling-project/docling/commit/7c705739f9db1cfc6c0a502fd5ba8b2093376d7f)[#1512](https://github.com/docling-project/docling/pull/1512)[)](https://github.com/docling-project/docling/commit/7c705739f9db1cfc6c0a502fd5ba8b2093376d7f)

May 2, 2025

[7c70573](https://github.com/docling-project/docling/commit/7c705739f9db1cfc6c0a502fd5ba8b2093376d7f) · May 2, 2025

History
-------

[477 Commits](https://github.com/docling-project/docling/commits/main/)

[](https://github.com/docling-project/docling/commits/main/)







 |
| 

[.actor](https://github.com/docling-project/docling/tree/main/.actor ".actor")







 | 

[.actor](https://github.com/docling-project/docling/tree/main/.actor ".actor")







 | 

[feat(actor): Docling Actor on Apify infrastructure (](https://github.com/docling-project/docling/commit/772487f9c91ad2ee53c591c314c72443f9cbfd23 "feat(actor): Docling Actor on Apify infrastructure (#875)
* fix: Improve OCR results, stricten criteria before dropping bitmap areas  (#719)
fix: Properly care for all bitmap elements in OCR
Signed-off-by: Christoph Auer <cau@zurich.ibm.com>
Signed-off-by: Adam Kliment <adam@netmilk.net>
* chore: bump version to 2.15.1 [skip ci]
* Actor: Initial implementation
Signed-off-by: Václav Vančura <commit@vancura.dev>
Signed-off-by: Adam Kliment <adam@netmilk.net>
* Actor: .dockerignore update
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Adding the Actor badge
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Moving the badge where it belongs
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Documentation update
Signed-off-by: Václav Vančura <commit@vancura.dev>
Signed-off-by: Adam Kliment <adam@netmilk.net>
* Actor: Switching Docker to python:3.11-slim-bookworm
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Enhance Docker security with proper user permissions
- Set proper ownership and permissions for runtime directory.
- Switch to non-root user for enhanced security.
- Use `--chown` flag in COPY commands to maintain correct file ownership.
- Ensure all files and directories are owned by `appuser`.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Optimize Dockerfile with security and size improvements
- Combine RUN commands to reduce image layers and overall size.
- Add non-root user `appuser` for improved security.
- Use `--no-install-recommends` flag to minimize installed packages.
- Install only necessary dependencies in a single RUN command.
- Maintain proper cleanup of package lists and caches.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Add Docker image metadata labels
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Update dependencies with fixed versions
Upgrade pip and npm to latest versions, pin docling to 2.15.1 and apify-cli to 2.7.1 for better stability and reproducibility. This change helps prevent unexpected behavior from dependency updates and ensures consistent builds across environments.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Fix apify-cli version problem
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Create Apify user home directory in Docker setup
Add and configure `/home/appuser/.apify` directory with proper permissions for the appuser in the Docker container. This ensures the Apify SDK has a writable home directory for storing its configuration and temporary files.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Update Docker configuration for improved security
- Add `ACTOR_PATH_IN_DOCKER_CONTEXT` argument to ignore the Apify-tooling related warning.
- Improve readability with consistent formatting and spacing in RUN commands.
- Enhance security by properly setting up appuser home directory and permissions.
- Streamline directory structure and ownership for runtime operations.
- Remove redundant `.apify` directory creation as it's handled by the CLI.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Improve shell script robustness and error handling
The shell script has been enhanced with better error handling, input validation, and cleanup procedures. Key improvements include:
- Added proper quoting around variables to prevent word splitting.
- Improved error messages and logging functionality.
- Implemented a cleanup trap to ensure temporary files are removed.
- Enhanced validation of input parameters and output formats.
- Added better handling of the log file and its storage.
- Improved command execution with proper evaluation.
- Added comments for better code readability and maintenance.
- Fixed potential security issues with proper variable expansion.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Improve script logging and error handling
- Initialize log file at `/tmp/docling.log` and redirect all output to it
- Remove exit on error trap, now only logs error line numbers
- Use temporary directory for timestamp file
- Capture Docling exit code and handle errors more gracefully
- Update log file references to use `LOG_FILE` variable
- Remove local log file during cleanup
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Updating Docling to 2.17.0
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Adding README
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: README update
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Enhance Dockerfile with additional utilities and env vars
- Add installation of `time` and `procps` packages for better resource monitoring.
- Set environment variables `PYTHONUNBUFFERED`, `MALLOC_ARENA_MAX`, and `EASYOCR_DOWNLOAD_CACHE` for improved performance.
- Create a cache directory for EasyOCR to optimize storage usage.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: README update
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Adding the Apify FirstPromoter integration
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Adding the \"Run on Apify\" button
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Fixing example PDF document URLs
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Documentation update
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Adding input document URL validation
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Fix quoting in `DOC_CONVERT_CMD` variable
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Documentation update
Removing the dollar signs due to what we discovered at https://cirosantilli.com/markdown-style-guide/#dollar-signs-in-shell-code
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Add specific error codes for better error handling
- `ERR_INVALID_INPUT` for missing document URL
- `ERR_URL_INACCESSIBLE` for inaccessible URLs
- `ERR_DOCLING_FAILED` for Docling command failures
- `ERR_OUTPUT_MISSING` for missing or empty output files
- `ERR_STORAGE_FAILED` for failures in storing the output document
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Enhance error handling and data logging
- Add `apify pushData` calls to log errors when the document URL is missing or inaccessible.
- Introduce dataset record creation with processing results, including a success status and output file URL.
- Modify completion message to indicate successful processing and provide a link to the results.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Normalize key-value store terminology
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Enhance `README.md` with output details
Added detailed information about the Actor's output storage to the `README.md`. This includes specifying where processed documents, processing logs, and dataset records are stored.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Adding CHANGELOG.md
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Adding dataset schema
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Update README with output URL details
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Fix the Apify call syntax and final result URL message
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Add section on Actors to README
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Replace Docling CLI with docling-serve API
This commit transitions the Actor from using the full Docling CLI package to the more lightweight docling-serve API. Key changes include:
- Redesign Dockerfile to use docling-serve as base image
- Update actor.sh to communicate with API instead of running CLI commands
- Improve content type handling for various output formats
- Update input schema to align with API parameters
- Reduce Docker image size from ~6GB to ~600MB
- Update documentation and changelog to reflect architectural changes
The image size reduction will make the Actor more cost-effective for users while maintaining all existing functionality including OCR capabilities.
Issue: No official docling-serve Docker image is currently available, which will be addressed in a future commit.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Overhaul the implementation using official docling-serve image
This commit completely revamps the Actor implementation with two major improvements:
1) CRITICAL CHANGE: Switch to official docling-serve image
* Now using quay.io/ds4sd/docling-serve-cpu:latest as base image
* Eliminates need for custom docling installation
* Ensures compatibility with latest docling-serve features
* Provides more reliable and consistent document processing
2) Fix Apify Actor KVS storage issues:
* Standardize key names to follow Apify conventions:
- Change \"OUTPUT_RESULT\" to \"OUTPUT\"
- Change \"DOCLING_LOG\" to \"LOG\"
* Add proper multi-stage Docker build:
- First stage builds dependencies including apify-cli
- Second stage uses official image and adds only necessary tools
* Fix permission issues in Docker container:
- Set up proper user and directory permissions
- Create writable directories for temporary files and models
- Configure environment variables for proper execution
3) Solve EACCES permission errors during CLI version checks:
* Create temporary HOME directory with proper write permissions
* Set APIFY_DISABLE_VERSION_CHECK=1 environment variable
* Add NODE_OPTIONS=\"--no-warnings\" to suppress update checks
* Support --no-update-notifier CLI flag when available
4) Improve code organization and reliability:
* Create reusable upload_to_kvs() function for all KVS operations
* Ensure log files are uploaded before tools directory is removed
* Set proper MIME types based on output format
* Add detailed error reporting and proper cleanup
* Display final output URLs for easy verification
This major refactoring significantly improves reliability and maintainability by leveraging the official docling-serve image while solving persistent permission and storage issues. The Actor now properly follows Apify standards while providing a more robust document processing pipeline.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Refactor `actor.sh` and add `docling_processor.py`
Refactor the `actor.sh` script to modularize functions for finding the Apify CLI, setting up a temporary environment, and cleaning it up. Introduce a new function, `get_actor_input()`, to handle input detection more robustly. Replace inline Python conversion logic with an external script, `docling_processor.py`, for processing documents via the docling-serve API.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Update CHANGELOG and README for Docker and API changes
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Removing obsolete actor.json keys
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Fixed input getter
Signed-off-by: Adam Kliment <adam@netmilk.net>
* Actor: Always output a zip
Signed-off-by: Adam Kliment <adam@netmilk.net>
* Actor: Resolving conflicts with main
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Resolving conflicts with main (pass 2)
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Updated main Readme and Actor Readme
Signed-off-by: Adam Kliment <adam@netmilk.net>
---------
Signed-off-by: Christoph Auer <cau@zurich.ibm.com>
Signed-off-by: Adam Kliment <adam@netmilk.net>
Signed-off-by: Václav Vančura <commit@vancura.dev>
Co-authored-by: Christoph Auer <60343111+cau-git@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Adam Kliment <adam@netmilk.net>")[#875](https://github.com/docling-project/docling/pull/875)[)](https://github.com/docling-project/docling/commit/772487f9c91ad2ee53c591c314c72443f9cbfd23 "feat(actor): Docling Actor on Apify infrastructure (#875)
* fix: Improve OCR results, stricten criteria before dropping bitmap areas  (#719)
fix: Properly care for all bitmap elements in OCR
Signed-off-by: Christoph Auer <cau@zurich.ibm.com>
Signed-off-by: Adam Kliment <adam@netmilk.net>
* chore: bump version to 2.15.1 [skip ci]
* Actor: Initial implementation
Signed-off-by: Václav Vančura <commit@vancura.dev>
Signed-off-by: Adam Kliment <adam@netmilk.net>
* Actor: .dockerignore update
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Adding the Actor badge
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Moving the badge where it belongs
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Documentation update
Signed-off-by: Václav Vančura <commit@vancura.dev>
Signed-off-by: Adam Kliment <adam@netmilk.net>
* Actor: Switching Docker to python:3.11-slim-bookworm
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Enhance Docker security with proper user permissions
- Set proper ownership and permissions for runtime directory.
- Switch to non-root user for enhanced security.
- Use `--chown` flag in COPY commands to maintain correct file ownership.
- Ensure all files and directories are owned by `appuser`.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Optimize Dockerfile with security and size improvements
- Combine RUN commands to reduce image layers and overall size.
- Add non-root user `appuser` for improved security.
- Use `--no-install-recommends` flag to minimize installed packages.
- Install only necessary dependencies in a single RUN command.
- Maintain proper cleanup of package lists and caches.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Add Docker image metadata labels
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Update dependencies with fixed versions
Upgrade pip and npm to latest versions, pin docling to 2.15.1 and apify-cli to 2.7.1 for better stability and reproducibility. This change helps prevent unexpected behavior from dependency updates and ensures consistent builds across environments.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Fix apify-cli version problem
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Create Apify user home directory in Docker setup
Add and configure `/home/appuser/.apify` directory with proper permissions for the appuser in the Docker container. This ensures the Apify SDK has a writable home directory for storing its configuration and temporary files.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Update Docker configuration for improved security
- Add `ACTOR_PATH_IN_DOCKER_CONTEXT` argument to ignore the Apify-tooling related warning.
- Improve readability with consistent formatting and spacing in RUN commands.
- Enhance security by properly setting up appuser home directory and permissions.
- Streamline directory structure and ownership for runtime operations.
- Remove redundant `.apify` directory creation as it's handled by the CLI.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Improve shell script robustness and error handling
The shell script has been enhanced with better error handling, input validation, and cleanup procedures. Key improvements include:
- Added proper quoting around variables to prevent word splitting.
- Improved error messages and logging functionality.
- Implemented a cleanup trap to ensure temporary files are removed.
- Enhanced validation of input parameters and output formats.
- Added better handling of the log file and its storage.
- Improved command execution with proper evaluation.
- Added comments for better code readability and maintenance.
- Fixed potential security issues with proper variable expansion.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Improve script logging and error handling
- Initialize log file at `/tmp/docling.log` and redirect all output to it
- Remove exit on error trap, now only logs error line numbers
- Use temporary directory for timestamp file
- Capture Docling exit code and handle errors more gracefully
- Update log file references to use `LOG_FILE` variable
- Remove local log file during cleanup
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Updating Docling to 2.17.0
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Adding README
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: README update
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Enhance Dockerfile with additional utilities and env vars
- Add installation of `time` and `procps` packages for better resource monitoring.
- Set environment variables `PYTHONUNBUFFERED`, `MALLOC_ARENA_MAX`, and `EASYOCR_DOWNLOAD_CACHE` for improved performance.
- Create a cache directory for EasyOCR to optimize storage usage.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: README update
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Adding the Apify FirstPromoter integration
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Adding the \"Run on Apify\" button
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Fixing example PDF document URLs
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Documentation update
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Adding input document URL validation
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Fix quoting in `DOC_CONVERT_CMD` variable
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Documentation update
Removing the dollar signs due to what we discovered at https://cirosantilli.com/markdown-style-guide/#dollar-signs-in-shell-code
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Add specific error codes for better error handling
- `ERR_INVALID_INPUT` for missing document URL
- `ERR_URL_INACCESSIBLE` for inaccessible URLs
- `ERR_DOCLING_FAILED` for Docling command failures
- `ERR_OUTPUT_MISSING` for missing or empty output files
- `ERR_STORAGE_FAILED` for failures in storing the output document
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Enhance error handling and data logging
- Add `apify pushData` calls to log errors when the document URL is missing or inaccessible.
- Introduce dataset record creation with processing results, including a success status and output file URL.
- Modify completion message to indicate successful processing and provide a link to the results.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Normalize key-value store terminology
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Enhance `README.md` with output details
Added detailed information about the Actor's output storage to the `README.md`. This includes specifying where processed documents, processing logs, and dataset records are stored.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Adding CHANGELOG.md
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Adding dataset schema
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Update README with output URL details
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Fix the Apify call syntax and final result URL message
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Add section on Actors to README
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Replace Docling CLI with docling-serve API
This commit transitions the Actor from using the full Docling CLI package to the more lightweight docling-serve API. Key changes include:
- Redesign Dockerfile to use docling-serve as base image
- Update actor.sh to communicate with API instead of running CLI commands
- Improve content type handling for various output formats
- Update input schema to align with API parameters
- Reduce Docker image size from ~6GB to ~600MB
- Update documentation and changelog to reflect architectural changes
The image size reduction will make the Actor more cost-effective for users while maintaining all existing functionality including OCR capabilities.
Issue: No official docling-serve Docker image is currently available, which will be addressed in a future commit.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Overhaul the implementation using official docling-serve image
This commit completely revamps the Actor implementation with two major improvements:
1) CRITICAL CHANGE: Switch to official docling-serve image
* Now using quay.io/ds4sd/docling-serve-cpu:latest as base image
* Eliminates need for custom docling installation
* Ensures compatibility with latest docling-serve features
* Provides more reliable and consistent document processing
2) Fix Apify Actor KVS storage issues:
* Standardize key names to follow Apify conventions:
- Change \"OUTPUT_RESULT\" to \"OUTPUT\"
- Change \"DOCLING_LOG\" to \"LOG\"
* Add proper multi-stage Docker build:
- First stage builds dependencies including apify-cli
- Second stage uses official image and adds only necessary tools
* Fix permission issues in Docker container:
- Set up proper user and directory permissions
- Create writable directories for temporary files and models
- Configure environment variables for proper execution
3) Solve EACCES permission errors during CLI version checks:
* Create temporary HOME directory with proper write permissions
* Set APIFY_DISABLE_VERSION_CHECK=1 environment variable
* Add NODE_OPTIONS=\"--no-warnings\" to suppress update checks
* Support --no-update-notifier CLI flag when available
4) Improve code organization and reliability:
* Create reusable upload_to_kvs() function for all KVS operations
* Ensure log files are uploaded before tools directory is removed
* Set proper MIME types based on output format
* Add detailed error reporting and proper cleanup
* Display final output URLs for easy verification
This major refactoring significantly improves reliability and maintainability by leveraging the official docling-serve image while solving persistent permission and storage issues. The Actor now properly follows Apify standards while providing a more robust document processing pipeline.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Refactor `actor.sh` and add `docling_processor.py`
Refactor the `actor.sh` script to modularize functions for finding the Apify CLI, setting up a temporary environment, and cleaning it up. Introduce a new function, `get_actor_input()`, to handle input detection more robustly. Replace inline Python conversion logic with an external script, `docling_processor.py`, for processing documents via the docling-serve API.
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Update CHANGELOG and README for Docker and API changes
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Removing obsolete actor.json keys
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Fixed input getter
Signed-off-by: Adam Kliment <adam@netmilk.net>
* Actor: Always output a zip
Signed-off-by: Adam Kliment <adam@netmilk.net>
* Actor: Resolving conflicts with main
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Resolving conflicts with main (pass 2)
Signed-off-by: Václav Vančura <commit@vancura.dev>
* Actor: Updated main Readme and Actor Readme
Signed-off-by: Adam Kliment <adam@netmilk.net>
---------
Signed-off-by: Christoph Auer <cau@zurich.ibm.com>
Signed-off-by: Adam Kliment <adam@netmilk.net>
Signed-off-by: Václav Vančura <commit@vancura.dev>
Co-authored-by: Christoph Auer <60343111+cau-git@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Adam Kliment <adam@netmilk.net>")



 | 

Mar 18, 2025

 |
| 

[.github](https://github.com/docling-project/docling/tree/main/.github ".github")







 | 

[.github](https://github.com/docling-project/docling/tree/main/.github ".github")







 | 

[fix(codecov): fix codecov argument and yaml file (](https://github.com/docling-project/docling/commit/fa7fc9e63d45f44af57dd6ad7636a2a16f04b8c4 "fix(codecov): fix codecov argument and yaml file (#1399)
* fix(codecov): fix codecov argument and yaml file
Signed-off-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com>
* ci: set the codecov status to success even if the CI fails
Signed-off-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com>
---------
Signed-off-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com>")[#1399](https://github.com/docling-project/docling/pull/1399)[)](https://github.com/docling-project/docling/commit/fa7fc9e63d45f44af57dd6ad7636a2a16f04b8c4 "fix(codecov): fix codecov argument and yaml file (#1399)
* fix(codecov): fix codecov argument and yaml file
Signed-off-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com>
* ci: set the codecov status to success even if the CI fails
Signed-off-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com>
---------
Signed-off-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com>")



 | 

Apr 15, 2025

 |
| 

[docling](https://github.com/docling-project/docling/tree/main/docling "docling")







 | 

[docling](https://github.com/docling-project/docling/tree/main/docling "docling")







 | 

[fix: usage of hashlib for FIPS (](https://github.com/docling-project/docling/commit/7c705739f9db1cfc6c0a502fd5ba8b2093376d7f "fix: usage of hashlib for FIPS (#1512)
fix usage of hashlib for FIPS
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>")[#1512](https://github.com/docling-project/docling/pull/1512)[)](https://github.com/docling-project/docling/commit/7c705739f9db1cfc6c0a502fd5ba8b2093376d7f "fix: usage of hashlib for FIPS (#1512)
fix usage of hashlib for FIPS
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>")



 | 

May 2, 2025

 |
| 

[docs](https://github.com/docling-project/docling/tree/main/docs "docs")







 | 

[docs](https://github.com/docling-project/docling/tree/main/docs "docs")







 | 

[chore: typo fix (](https://github.com/docling-project/docling/commit/a097ccd8d5c6480ecba6bed16a36bf9a155f4fe3 "chore: typo fix (#1465)
* typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
---------
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>")[#1465](https://github.com/docling-project/docling/pull/1465)[)](https://github.com/docling-project/docling/commit/a097ccd8d5c6480ecba6bed16a36bf9a155f4fe3 "chore: typo fix (#1465)
* typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
* chore: typo fix
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>
---------
Signed-off-by: nkh0472 <67589323+nkh0472@users.noreply.github.com>")



 | 

Apr 28, 2025

 |
| 

[tests](https://github.com/docling-project/docling/tree/main/tests "tests")







 | 

[tests](https://github.com/docling-project/docling/tree/main/tests "tests")







 | 

[chore: format JSON test files to enable comparison (](https://github.com/docling-project/docling/commit/de56523974a70ab980ba5ec0b7d710978cac9673 "chore: format JSON test files to enable comparison (#1511)
Signed-off-by: Panos Vagenas <pva@zurich.ibm.com>")[#1511](https://github.com/docling-project/docling/pull/1511)[)](https://github.com/docling-project/docling/commit/de56523974a70ab980ba5ec0b7d710978cac9673 "chore: format JSON test files to enable comparison (#1511)
Signed-off-by: Panos Vagenas <pva@zurich.ibm.com>")



 | 

May 2, 2025

 |
| 

[.gitignore](https://github.com/docling-project/docling/blob/main/.gitignore ".gitignore")







 | 

[.gitignore](https://github.com/docling-project/docling/blob/main/.gitignore ".gitignore")







 | 

[ci: Add Github Actions (](https://github.com/docling-project/docling/commit/e45dc5d1a5772571d222fcf94b1e254989b87aed "ci: Add Github Actions (#4)
* add Github Actions
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* apply styling
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* Update .github/actions/setup-poetry/action.yml
Co-authored-by: Panos Vagenas <35837085+vagenas@users.noreply.github.com>
Signed-off-by: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com>
* add semantic-release config
Signed-off-by: Panos Vagenas <35837085+vagenas@users.noreply.github.com>
---------
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
Signed-off-by: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com>
Signed-off-by: Panos Vagenas <35837085+vagenas@users.noreply.github.com>
Co-authored-by: Panos Vagenas <35837085+vagenas@users.noreply.github.com>")[#4](https://github.com/docling-project/docling/pull/4)[)](https://github.com/docling-project/docling/commit/e45dc5d1a5772571d222fcf94b1e254989b87aed "ci: Add Github Actions (#4)
* add Github Actions
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* apply styling
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* Update .github/actions/setup-poetry/action.yml
Co-authored-by: Panos Vagenas <35837085+vagenas@users.noreply.github.com>
Signed-off-by: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com>
* add semantic-release config
Signed-off-by: Panos Vagenas <35837085+vagenas@users.noreply.github.com>
---------
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
Signed-off-by: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com>
Signed-off-by: Panos Vagenas <35837085+vagenas@users.noreply.github.com>
Co-authored-by: Panos Vagenas <35837085+vagenas@users.noreply.github.com>")



 | 

Jul 16, 2024

 |
| 

[.pre-commit-config.yaml](https://github.com/docling-project/docling/blob/main/.pre-commit-config.yaml ".pre-commit-config.yaml")







 | 

[.pre-commit-config.yaml](https://github.com/docling-project/docling/blob/main/.pre-commit-config.yaml ".pre-commit-config.yaml")







 | 

[ci: add coverage and ruff (](https://github.com/docling-project/docling/commit/5458a884649ae0887c1659d9075fc4a8d9f434d9 "ci: add coverage and ruff (#1383)
* add coverage calculation and push
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* new codecov version and usage of token
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* enable ruff formatter instead of black and isort
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* apply ruff lint fixes
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* apply ruff unsafe fixes
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* add removed imports
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* runs 1 on linter issues
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* finalize linter fixes
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* Update pyproject.toml
Co-authored-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com>
Signed-off-by: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com>
---------
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
Signed-off-by: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com>
Co-authored-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com>")[#1383](https://github.com/docling-project/docling/pull/1383)[)](https://github.com/docling-project/docling/commit/5458a884649ae0887c1659d9075fc4a8d9f434d9 "ci: add coverage and ruff (#1383)
* add coverage calculation and push
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* new codecov version and usage of token
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* enable ruff formatter instead of black and isort
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* apply ruff lint fixes
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* apply ruff unsafe fixes
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* add removed imports
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* runs 1 on linter issues
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* finalize linter fixes
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* Update pyproject.toml
Co-authored-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com>
Signed-off-by: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com>
---------
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
Signed-off-by: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com>
Co-authored-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com>")



 | 

Apr 14, 2025

 |
| 

[CHANGELOG.md](https://github.com/docling-project/docling/blob/main/CHANGELOG.md "CHANGELOG.md")







 | 

[CHANGELOG.md](https://github.com/docling-project/docling/blob/main/CHANGELOG.md "CHANGELOG.md")







 | 

[chore: bump version to 2.31.0 \[skip ci\]](https://github.com/docling-project/docling/commit/c67133dde46462127825e3c0cb30f0312ecf7002 "chore: bump version to 2.31.0 [skip ci]")



 | 

Apr 25, 2025

 |
| 

[CITATION.cff](https://github.com/docling-project/docling/blob/main/CITATION.cff "CITATION.cff")







 | 

[CITATION.cff](https://github.com/docling-project/docling/blob/main/CITATION.cff "CITATION.cff")







 | 

[chore: Update repository URL in CITATION.cff (](https://github.com/docling-project/docling/commit/b295da4bfea1231856df03ffc075a74252f510bd "chore: Update repository URL in CITATION.cff (#1363)
Update repository URL in CITATION.cff
Repository was moved to docling-project/docling, so adjust the URL.
Signed-off-by: Simon Leiß <5084100+sleiss@users.noreply.github.com>")[#1363](https://github.com/docling-project/docling/pull/1363)[)](https://github.com/docling-project/docling/commit/b295da4bfea1231856df03ffc075a74252f510bd "chore: Update repository URL in CITATION.cff (#1363)
Update repository URL in CITATION.cff
Repository was moved to docling-project/docling, so adjust the URL.
Signed-off-by: Simon Leiß <5084100+sleiss@users.noreply.github.com>")



 | 

Apr 14, 2025

 |
| 

[CODE\_OF\_CONDUCT.md](https://github.com/docling-project/docling/blob/main/CODE_OF_CONDUCT.md "CODE_OF_CONDUCT.md")







 | 

[CODE\_OF\_CONDUCT.md](https://github.com/docling-project/docling/blob/main/CODE_OF_CONDUCT.md "CODE_OF_CONDUCT.md")







 | 

[docs: Linux Foundation AI & Data (](https://github.com/docling-project/docling/commit/1d680b0a321d95fc6bd65b7bb4d5e15005a0250a "docs: Linux Foundation AI & Data (#1183)
* point the auxiliary files to the community repo and add lfai in README
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* update docs index
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
---------
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>")[#1183](https://github.com/docling-project/docling/pull/1183)[)](https://github.com/docling-project/docling/commit/1d680b0a321d95fc6bd65b7bb4d5e15005a0250a "docs: Linux Foundation AI & Data (#1183)
* point the auxiliary files to the community repo and add lfai in README
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* update docs index
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
---------
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>")



 | 

Mar 19, 2025

 |
| 

[CONTRIBUTING.md](https://github.com/docling-project/docling/blob/main/CONTRIBUTING.md "CONTRIBUTING.md")







 | 

[CONTRIBUTING.md](https://github.com/docling-project/docling/blob/main/CONTRIBUTING.md "CONTRIBUTING.md")







 | 

[docs: Add testing in the docs (](https://github.com/docling-project/docling/commit/01fbfd565204258acb2986dcaefad3a328626c66 "docs: Add testing in the docs (#1379)
* add testing to CONTRIBUTING
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* document test generation
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* typo
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
---------
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>")[#1379](https://github.com/docling-project/docling/pull/1379)[)](https://github.com/docling-project/docling/commit/01fbfd565204258acb2986dcaefad3a328626c66 "docs: Add testing in the docs (#1379)
* add testing to CONTRIBUTING
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* document test generation
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* typo
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
---------
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>")



 | 

Apr 14, 2025

 |
| 

[Dockerfile](https://github.com/docling-project/docling/blob/main/Dockerfile "Dockerfile")







 | 

[Dockerfile](https://github.com/docling-project/docling/blob/main/Dockerfile "Dockerfile")







 | 

[chore: properly clean up apt temporary files in Dockerfile (](https://github.com/docling-project/docling/commit/8ebb0bf1a096b3e965b309a6a90df71aed4611ea "chore: properly clean up apt temporary files in Dockerfile (#1223)
Signed-off-by: Peter Dave Hello <hsu@peterdavehello.org>")[#1223](https://github.com/docling-project/docling/pull/1223)[)](https://github.com/docling-project/docling/commit/8ebb0bf1a096b3e965b309a6a90df71aed4611ea "chore: properly clean up apt temporary files in Dockerfile (#1223)
Signed-off-by: Peter Dave Hello <hsu@peterdavehello.org>")



 | 

Mar 25, 2025

 |
| 

[LICENSE](https://github.com/docling-project/docling/blob/main/LICENSE "LICENSE")







 | 

[LICENSE](https://github.com/docling-project/docling/blob/main/LICENSE "LICENSE")







 | 

[chore: fix placeholders in license (](https://github.com/docling-project/docling/commit/6f1811e050e8beaa5e82bc8a755a4c1a56a0fba3 "chore: fix placeholders in license (#63)
Signed-off-by: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com>")[#63](https://github.com/docling-project/docling/pull/63)[)](https://github.com/docling-project/docling/commit/6f1811e050e8beaa5e82bc8a755a4c1a56a0fba3 "chore: fix placeholders in license (#63)
Signed-off-by: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com>")



 | 

Sep 6, 2024

 |
| 

[MAINTAINERS.md](https://github.com/docling-project/docling/blob/main/MAINTAINERS.md "MAINTAINERS.md")







 | 

[MAINTAINERS.md](https://github.com/docling-project/docling/blob/main/MAINTAINERS.md "MAINTAINERS.md")







 | 

[docs: Linux Foundation AI & Data (](https://github.com/docling-project/docling/commit/1d680b0a321d95fc6bd65b7bb4d5e15005a0250a "docs: Linux Foundation AI & Data (#1183)
* point the auxiliary files to the community repo and add lfai in README
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* update docs index
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
---------
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>")[#1183](https://github.com/docling-project/docling/pull/1183)[)](https://github.com/docling-project/docling/commit/1d680b0a321d95fc6bd65b7bb4d5e15005a0250a "docs: Linux Foundation AI & Data (#1183)
* point the auxiliary files to the community repo and add lfai in README
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* update docs index
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
---------
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>")



 | 

Mar 19, 2025

 |
| 

[README.md](https://github.com/docling-project/docling/blob/main/README.md "README.md")







 | 

[README.md](https://github.com/docling-project/docling/blob/main/README.md "README.md")







 | 

[docs: Add OpenSSF Best Practices badge (](https://github.com/docling-project/docling/commit/64918a81ac315ea0108f1411a1537dd12117e49c "docs: Add OpenSSF Best Practices badge (#1430)
* docs: add openssf badge
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* add badge to docs
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
---------
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>")[#1430](https://github.com/docling-project/docling/pull/1430)[)](https://github.com/docling-project/docling/commit/64918a81ac315ea0108f1411a1537dd12117e49c "docs: Add OpenSSF Best Practices badge (#1430)
* docs: add openssf badge
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
* add badge to docs
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
---------
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>")



 | 

Apr 22, 2025

 |
| 

[mkdocs.yml](https://github.com/docling-project/docling/blob/main/mkdocs.yml "mkdocs.yml")







 | 

[mkdocs.yml](https://github.com/docling-project/docling/blob/main/mkdocs.yml "mkdocs.yml")







 | 

[feat: add tutorial using Milvus and Docling for RAG pipeline (](https://github.com/docling-project/docling/commit/a2fbbba9f7f889a1f84f8642cf5c75feb57e8668 "feat: add tutorial using Milvus and Docling for RAG pipeline (#1449)
* feat: add milvus rag with docling tutorial
Signed-off-by: Ryan Lin <linjinhong@yandex.com>
* chore: run pre-commit
Signed-off-by: Ryan Lin <linjinhong@yandex.com>
* feat: add RAG with Milvus example to mkdocs
Signed-off-by: Ryan Lin <linjinhong@yandex.com>
---------
Signed-off-by: Ryan Lin <linjinhong@yandex.com>")[#1449](https://github.com/docling-project/docling/pull/1449)[)](https://github.com/docling-project/docling/commit/a2fbbba9f7f889a1f84f8642cf5c75feb57e8668 "feat: add tutorial using Milvus and Docling for RAG pipeline (#1449)
* feat: add milvus rag with docling tutorial
Signed-off-by: Ryan Lin <linjinhong@yandex.com>
* chore: run pre-commit
Signed-off-by: Ryan Lin <linjinhong@yandex.com>
* feat: add RAG with Milvus example to mkdocs
Signed-off-by: Ryan Lin <linjinhong@yandex.com>
---------
Signed-off-by: Ryan Lin <linjinhong@yandex.com>")



 | 

Apr 25, 2025

 |
| 

[poetry.lock](https://github.com/docling-project/docling/blob/main/poetry.lock "poetry.lock")







 | 

[poetry.lock](https://github.com/docling-project/docling/blob/main/poetry.lock "poetry.lock")







 | 

[chore: update dependencies in lock file (](https://github.com/docling-project/docling/commit/d8959c6b19da6e7ee8b0311c578224a860975010 "chore: update dependencies in lock file (#1458)
update lock: h11 vuln and torch update
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>")[#1458](https://github.com/docling-project/docling/pull/1458)[)](https://github.com/docling-project/docling/commit/d8959c6b19da6e7ee8b0311c578224a860975010 "chore: update dependencies in lock file (#1458)
update lock: h11 vuln and torch update
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>")



 | 

Apr 28, 2025

 |
| 

[pyproject.toml](https://github.com/docling-project/docling/blob/main/pyproject.toml "pyproject.toml")







 | 

[pyproject.toml](https://github.com/docling-project/docling/blob/main/pyproject.toml "pyproject.toml")







 | 

[chore: bump version to 2.31.0 \[skip ci\]](https://github.com/docling-project/docling/commit/c67133dde46462127825e3c0cb30f0312ecf7002 "chore: bump version to 2.31.0 [skip ci]")



 | 

Apr 25, 2025

 |
| 

View all files

 |

Repository files navigation
---------------------------

*   [README](https://github.com/docling-project/docling?tab=readme-ov-file#)
*   [Code of conduct](https://github.com/docling-project/docling?tab=readme-ov-file#)
*   [MIT license](https://github.com/docling-project/docling?tab=readme-ov-file#)
*   [Security](https://github.com/docling-project/docling?tab=readme-ov-file#)

[![Image 18: Docling](https://github.com/docling-project/docling/raw/main/docs/assets/docling_processing.png)](https://github.com/docling-project/docling)

Docling
=======

[](https://github.com/docling-project/docling?tab=readme-ov-file#docling)

[![Image 19: DS4SD%2Fdocling | Trendshift](https://camo.githubusercontent.com/2397b9a4d2107753af74afc82fed46cdc5d4cdd78b033bdffe924d60fad49840/68747470733a2f2f7472656e6473686966742e696f2f6170692f62616467652f7265706f7369746f726965732f3132313332)](https://trendshift.io/repositories/12132)

[![Image 20: arXiv](https://camo.githubusercontent.com/2610bebade789d244a2ef0446592fc58fe1c4506570f064e65e1b2b77b1879cf/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f61725869762d323430382e30393836392d6233316231622e737667)](https://arxiv.org/abs/2408.09869) [![Image 21: Docs](https://camo.githubusercontent.com/3801aa3df692a6e677d79aab6d8753c115904773be47cd47ad67c392f4515250/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f63732d6c6976652d627269676874677265656e)](https://docling-project.github.io/docling/) [![Image 22: PyPI version](https://camo.githubusercontent.com/0798c9df01764984318db919ff970737823a3cab2fd3608b4cfde31afb5f18d2/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f646f636c696e67)](https://pypi.org/project/docling/) [![Image 23: PyPI - Python Version](https://camo.githubusercontent.com/581db71834c2fe0d4d06db68b7f2f65af1f58f538597c8db3989e454247cdc6d/68747470733a2f2f696d672e736869656c64732e696f2f707970692f707976657273696f6e732f646f636c696e67)](https://pypi.org/project/docling/) [![Image 24: Poetry](https://camo.githubusercontent.com/e9de59b7d2a7896f05d977ca76c28c69c6ff163840e5526baeb18e56c532ad5f/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d68747470733a2f2f707974686f6e2d706f657472792e6f72672f62616467652f76302e6a736f6e)](https://python-poetry.org/) [![Image 25: Code style: black](https://camo.githubusercontent.com/5bf9e9fa18966df7cb5fac7715bef6b72df15e01a6efa9d616c83f9fcb527fe2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f64652532307374796c652d626c61636b2d3030303030302e737667)](https://github.com/psf/black) [![Image 26: Imports: isort](https://camo.githubusercontent.com/4e71e9b7ea25fbc70f186444684f4bfd9def4c737dfc327796cc2c332cbf0b46/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f253230696d706f7274732d69736f72742d2532333136373462313f7374796c653d666c6174266c6162656c436f6c6f723d656638333336)](https://pycqa.github.io/isort/) [![Image 27: Pydantic v2](https://camo.githubusercontent.com/1ec3b5f774c66556456b4b855a73c1706f5454fa0ac3d2e4bcdabda9153b6b45/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f707964616e7469632f707964616e7469632f6d61696e2f646f63732f62616467652f76322e6a736f6e)](https://pydantic.dev/) [![Image 28: pre-commit](https://camo.githubusercontent.com/c8dfc1d0c35fe0cc438cf57a44b9d915e0baa2aef9da75d07ad3ee2cdb237214/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7072652d2d636f6d6d69742d656e61626c65642d627269676874677265656e3f6c6f676f3d7072652d636f6d6d6974266c6f676f436f6c6f723d7768697465)](https://github.com/pre-commit/pre-commit) [![Image 29: License MIT](https://camo.githubusercontent.com/116042ab89d583f38f25c4fc925ad3b428e641c647494e40ab68f20ed20b0cf9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f646f636c696e672d70726f6a6563742f646f636c696e67)](https://opensource.org/licenses/MIT) [![Image 30: PyPI Downloads](https://camo.githubusercontent.com/4d0005a1700620d43adf3bb56108360995e28f58c3f7f381ddd8d70085f21d05/68747470733a2f2f7374617469632e706570792e746563682f62616467652f646f636c696e672f6d6f6e7468)](https://pepy.tech/projects/docling) [![Image 31: Docling Actor](https://camo.githubusercontent.com/7871c94f672afdd5d86438eff98da6f03bdb3d8a3cf29ef2226e4fbb1163e893/68747470733a2f2f61706966792e636f6d2f6163746f722d62616467653f6163746f723d76616e637572612f646f636c696e673f6670723d646f636c696e67)](https://apify.com/vancura/docling) [![Image 32: OpenSSF Best Practices](https://camo.githubusercontent.com/6d0606017439b3c2260613e03d080d1fd18dbeaada63244cafa182f7dd89fb4f/68747470733a2f2f7777772e626573747072616374696365732e6465762f70726f6a656374732f31303130312f6261646765)](https://www.bestpractices.dev/projects/10101) [![Image 33: LF AI & Data](https://camo.githubusercontent.com/1bd2541e3e865f5e967a6af94ef9d1f0c22246dce0d31e08d3243438e66b4efd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c462532304149253230253236253230446174612d3030333737383f6c6f676f3d6c696e7578666f756e646174696f6e266c6f676f436f6c6f723d66666626636f6c6f723d303039346666266c6162656c436f6c6f723d303033373738)](https://lfaidata.foundation/projects/)

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

Features
--------

[](https://github.com/docling-project/docling?tab=readme-ov-file#features)

*   🗂️ Parsing of [multiple document formats](https://docling-project.github.io/docling/usage/supported_formats/) incl. PDF, DOCX, XLSX, HTML, images, and more
*   📑 Advanced PDF understanding incl. page layout, reading order, table structure, code, formulas, image classification, and more
*   🧬 Unified, expressive [DoclingDocument](https://docling-project.github.io/docling/concepts/docling_document/) representation format
*   ↪️ Various [export formats](https://docling-project.github.io/docling/usage/supported_formats/) and options, including Markdown, HTML, and lossless JSON
*   🔒 Local execution capabilities for sensitive data and air-gapped environments
*   🤖 Plug-and-play [integrations](https://docling-project.github.io/docling/integrations/) incl. LangChain, LlamaIndex, Crew AI & Haystack for agentic AI
*   🔍 Extensive OCR support for scanned PDFs and images
*   🥚 Support of Visual Language Models ([SmolDocling](https://huggingface.co/ds4sd/SmolDocling-256M-preview)) 🆕
*   💻 Simple and convenient CLI

### Coming soon

[](https://github.com/docling-project/docling?tab=readme-ov-file#coming-soon)

*   📝 Metadata extraction, including title, authors, references & language
*   📝 Chart understanding (Barchart, Piechart, LinePlot, etc)
*   📝 Complex chemistry understanding (Molecular structures)

Installation
------------

[](https://github.com/docling-project/docling?tab=readme-ov-file#installation)

To use Docling, simply install `docling` from your package manager, e.g. pip:

```shell
pip install docling
```

Works on macOS, Linux and Windows environments. Both x86\_64 and arm64 architectures.

More [detailed installation instructions](https://docling-project.github.io/docling/installation/) are available in the docs.

Getting started
---------------

[](https://github.com/docling-project/docling?tab=readme-ov-file#getting-started)

To convert individual documents with python, use `convert()`, for example:

```python
from docling.document_converter import DocumentConverter

source = "https://arxiv.org/pdf/2408.09869"  # document per local path or URL
converter = DocumentConverter()
result = converter.convert(source)
print(result.document.export_to_markdown())  # output: "## Docling Technical Report[...]"
```

More [advanced usage options](https://docling-project.github.io/docling/usage/) are available in the docs.

CLI
---

[](https://github.com/docling-project/docling?tab=readme-ov-file#cli)

Docling has a built-in CLI to run conversions.

```shell
docling https://arxiv.org/pdf/2206.01062
```

You can also use 🥚[SmolDocling](https://huggingface.co/ds4sd/SmolDocling-256M-preview) and other VLMs via Docling CLI:

```shell
docling --pipeline vlm --vlm-model smoldocling https://arxiv.org/pdf/2206.01062
```

This will use MLX acceleration on supported Apple Silicon hardware.

Read more [here](https://docling-project.github.io/docling/usage/)

Documentation
-------------

[](https://github.com/docling-project/docling?tab=readme-ov-file#documentation)

Check out Docling's [documentation](https://docling-project.github.io/docling/), for details on installation, usage, concepts, recipes, extensions, and more.

Examples
--------

[](https://github.com/docling-project/docling?tab=readme-ov-file#examples)

Go hands-on with our [examples](https://docling-project.github.io/docling/examples/), demonstrating how to address different application use cases with Docling.

Integrations
------------

[](https://github.com/docling-project/docling?tab=readme-ov-file#integrations)

To further accelerate your AI application development, check out Docling's native [integrations](https://docling-project.github.io/docling/integrations/) with popular frameworks and tools.

Get help and support
--------------------

[](https://github.com/docling-project/docling?tab=readme-ov-file#get-help-and-support)

Please feel free to connect with us using the [discussion section](https://github.com/docling-project/docling/discussions).

Technical report
----------------

[](https://github.com/docling-project/docling?tab=readme-ov-file#technical-report)

For more details on Docling's inner workings, check out the [Docling Technical Report](https://arxiv.org/abs/2408.09869).

Contributing
------------

[](https://github.com/docling-project/docling?tab=readme-ov-file#contributing)

Please read [Contributing to Docling](https://github.com/docling-project/docling/blob/main/CONTRIBUTING.md) for details.

References
----------

[](https://github.com/docling-project/docling?tab=readme-ov-file#references)

If you use Docling in your projects, please consider citing the following:

```bibtex
@techreport{Docling,
  author = {Deep Search Team},
  month = {8},
  title = {Docling Technical Report},
  url = {https://arxiv.org/abs/2408.09869},
  eprint = {2408.09869},
  doi = {10.48550/arXiv.2408.09869},
  version = {1.0.0},
  year = {2024}
}
```

License
-------

[](https://github.com/docling-project/docling?tab=readme-ov-file#license)

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

LF AI & Data
------------

[](https://github.com/docling-project/docling?tab=readme-ov-file#lf-ai--data)

Docling is hosted as a project in the [LF AI & Data Foundation](https://lfaidata.foundation/projects/).

### IBM ❤️ Open Source AI

[](https://github.com/docling-project/docling?tab=readme-ov-file#ibm-%EF%B8%8F-open-source-ai)

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

About
-----

Get your documents ready for gen AI

[docling-project.github.io/docling](https://docling-project.github.io/docling "https://docling-project.github.io/docling")

### Topics

[html](https://github.com/topics/html "Topic: html") [markdown](https://github.com/topics/markdown "Topic: markdown") [pdf](https://github.com/topics/pdf "Topic: pdf") [ai](https://github.com/topics/ai "Topic: ai") [convert](https://github.com/topics/convert "Topic: convert") [xlsx](https://github.com/topics/xlsx "Topic: xlsx") [pdf-converter](https://github.com/topics/pdf-converter "Topic: pdf-converter") [docx](https://github.com/topics/docx "Topic: docx") [documents](https://github.com/topics/documents "Topic: documents") [pptx](https://github.com/topics/pptx "Topic: pptx") [pdf-to-text](https://github.com/topics/pdf-to-text "Topic: pdf-to-text") [tables](https://github.com/topics/tables "Topic: tables") [document-parser](https://github.com/topics/document-parser "Topic: document-parser") [pdf-to-json](https://github.com/topics/pdf-to-json "Topic: pdf-to-json") [document-parsing](https://github.com/topics/document-parsing "Topic: document-parsing")

### Resources

[Readme](https://github.com/docling-project/docling?tab=readme-ov-file#readme-ov-file)

### License

[MIT license](https://github.com/docling-project/docling?tab=readme-ov-file#MIT-1-ov-file)

### Code of conduct

[Code of conduct](https://github.com/docling-project/docling?tab=readme-ov-file#coc-ov-file)

### Security policy

[Security policy](https://github.com/docling-project/docling?tab=readme-ov-file#security-ov-file)

### Citation

Cite this repository

Loading

Something went wrong.

[Activity](https://github.com/docling-project/docling/activity)

[Custom properties](https://github.com/docling-project/docling/custom-properties)

### Stars

[**28.7k** stars](https://github.com/docling-project/docling/stargazers)

### Watchers

[**130** watching](https://github.com/docling-project/docling/watchers)

### Forks

[**1.8k** forks](https://github.com/docling-project/docling/forks)

[Report repository](https://github.com/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2Fdocling-project%2Fdocling&report=docling-project+%28user%29)

[Releases 95](https://github.com/docling-project/docling/releases)
------------------------------------------------------------------

[v2.31.0 Latest Apr 25, 2025](https://github.com/docling-project/docling/releases/tag/v2.31.0)

[\+ 94 releases](https://github.com/docling-project/docling/releases)

[Used by 1.7k](https://github.com/docling-project/docling/network/dependents)
-----------------------------------------------------------------------------

[* ![Image 34: @guilhermefay](https://avatars.githubusercontent.com/u/154525170?s=64&v=4) * ![Image 35: @pranam-gf](https://avatars.githubusercontent.com/u/205459217?s=64&v=4) * ![Image 36: @Akshobhya147](https://avatars.githubusercontent.com/u/93208271?s=64&v=4) * ![Image 37: @th3w1zard1](https://avatars.githubusercontent.com/u/2219836?s=64&v=4) * ![Image 38: @LouisGolding](https://avatars.githubusercontent.com/u/150054374?s=64&v=4) * ![Image 39: @LaySatya](https://avatars.githubusercontent.com/u/141922646?s=64&v=4) * ![Image 40: @marcodsn](https://avatars.githubusercontent.com/u/26123646?s=64&v=4) * ![Image 41: @TacticalNuclearRaccoon](https://avatars.githubusercontent.com/u/72969202?s=64&v=4) \+ 1,663](https://github.com/docling-project/docling/network/dependents)

[Contributors 77](https://github.com/docling-project/docling/graphs/contributors)
---------------------------------------------------------------------------------

*   [![Image 42: @dolfim-ibm](https://avatars.githubusercontent.com/u/97102151?s=64&v=4)](https://github.com/dolfim-ibm)
*   [![Image 43: @github-actions[bot]](https://avatars.githubusercontent.com/in/15368?s=64&v=4)](https://github.com/apps/github-actions)
*   [![Image 44: @vagenas](https://avatars.githubusercontent.com/u/35837085?s=64&v=4)](https://github.com/vagenas)
*   [![Image 45: @cau-git](https://avatars.githubusercontent.com/u/60343111?s=64&v=4)](https://github.com/cau-git)
*   [![Image 46: @maxmnemonic](https://avatars.githubusercontent.com/u/101627549?s=64&v=4)](https://github.com/maxmnemonic)
*   [![Image 47: @ceberam](https://avatars.githubusercontent.com/u/75900930?s=64&v=4)](https://github.com/ceberam)
*   [![Image 48: @PeterStaar-IBM](https://avatars.githubusercontent.com/u/91719829?s=64&v=4)](https://github.com/PeterStaar-IBM)
*   [![Image 49: @nikos-livathinos](https://avatars.githubusercontent.com/u/100353117?s=64&v=4)](https://github.com/nikos-livathinos)
*   [![Image 50: @rateixei](https://avatars.githubusercontent.com/u/5182878?s=64&v=4)](https://github.com/rateixei)
*   [![Image 51: @farzad528](https://avatars.githubusercontent.com/u/40604067?s=64&v=4)](https://github.com/farzad528)
*   [![Image 52: @Matteo-Omenetti](https://avatars.githubusercontent.com/u/43417658?s=64&v=4)](https://github.com/Matteo-Omenetti)
*   [![Image 53: @guilhemvermorel](https://avatars.githubusercontent.com/u/83694424?s=64&v=4)](https://github.com/guilhemvermorel)
*   [![Image 54: @gaspardpetit](https://avatars.githubusercontent.com/u/9883156?s=64&v=4)](https://github.com/gaspardpetit)
*   [![Image 55: @SimJeg](https://avatars.githubusercontent.com/u/13233749?s=64&v=4)](https://github.com/SimJeg)

[\+ 63 contributors](https://github.com/docling-project/docling/graphs/contributors)

Languages
---------

*   [Python 71.5%](https://github.com/docling-project/docling/search?l=python)
*   [HTML 26.7%](https://github.com/docling-project/docling/search?l=html)
*   [Shell 1.4%](https://github.com/docling-project/docling/search?l=shell)
*   [Dockerfile 0.4%](https://github.com/docling-project/docling/search?l=dockerfile)

Footer
------

[](https://github.com/ "GitHub")© 2025 GitHub, Inc.

### Footer navigation

*   [Terms](https://docs.github.com/site-policy/github-terms/github-terms-of-service)
*   [Privacy](https://docs.github.com/site-policy/privacy-policies/github-privacy-statement)
*   [Security](https://github.com/security)
*   [Status](https://www.githubstatus.com/)
*   [Docs](https://docs.github.com/)
*   [Contact](https://support.github.com/?tags=dotcom-footer)
*   Manage cookies
*   Do not share my personal information

You can’t perform that action at this time.
