Something went wrong. Try again.
Nix Packages collection & NixOS github.com/NixOS/nixpkgs
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371{ lib, buildPythonPackage, fetchFromGitHub,
# build-system hatchling,
# dependencies certifi, docling-core, filetype, pluggy, pydantic, pydantic-settings, requests, tqdm,
# optional-dependencies # cli: python-dotenv, rich, typer, # convert-core: numpy, pillow, rtree, scipy, # extract-core: polyfactory, # feat-ocr-easyocr: easyocr, scikit-image, # feat-ocr-rapidocr-onnx: onnxruntime, rapidocr, # feat-ocr-tesserocr: pandas, tesserocr, # format-audio: numba, openai-whisper, # format-docx: python-docx, # format-email: mail-parser, # format-html: beautifulsoup4, # format-html-render: playwright, # format-latex: pylatexenc, # format-markdown: marko, # format-opendocument: odfdo, # format-pdf-docling: docling-parse, pypdfium2, # format-pptx: python-pptx, # format-video: librosa, scikit-learn, soundfile, # format-xlsx: openpyxl, # format-xml-jats: lxml, # format-xml-uspto: defusedxml, # models-local: accelerate, docling-ibm-models, huggingface-hub, torch, torchvision, # models-remote: tritonclient, # models-vlm-inline: peft, transformers, # service-client: httpx, websockets,
# tests ffmpeg-headless, gitMinimal, pytest-xdist, pytestCheckHook, writableTmpDirAsHomeHook,}:
buildPythonPackage (finalAttrs: { pname = "docling-slim"; version = "2.118.0"; pyproject = true; __structuredAttrs = true;
src = fetchFromGitHub { owner = "docling-project"; repo = "docling"; tag = "v${finalAttrs.version}"; hash = "sha256-99XxwibuvorgXXvqZtHHjJ4wvjoQdTNC36S6GnQTMXQ="; };
build-system = [ hatchling ];
dependencies = [ certifi docling-core filetype pluggy pydantic pydantic-settings requests tqdm ];
optional-dependencies = rec { cli = [ python-dotenv rich typer ]; convert-core = [ numpy pillow rtree scipy ]; extract-core = convert-core ++ [ polyfactory ]; # docling-core[chunking], whose extra deps nixpkgs already ships unconditionally feat-chunking = [ docling-core ]; feat-ocr-easyocr = [ easyocr scikit-image ]; # ocrmac is darwin-only and not packaged in nixpkgs feat-ocr-mac = [ ]; feat-ocr-rapidocr = [ rapidocr ]; feat-ocr-rapidocr-onnx = [ onnxruntime rapidocr ]; feat-ocr-tesserocr = [ pandas tesserocr ]; # whisper-s2t-reborn is not packaged in nixpkgs format-audio = [ numba openai-whisper ]; format-docx = [ python-docx ]; format-email = format-html ++ [ mail-parser ]; format-html = [ beautifulsoup4 ]; format-html-render = [ playwright ]; format-latex = [ pylatexenc ]; format-markdown = [ marko ]; format-office = format-docx ++ format-pptx ++ format-xlsx; format-opendocument = [ odfdo ]; format-pdf = format-pdf-pypdfium2 ++ format-pdf-docling; format-pdf-docling = [ docling-parse pypdfium2 ]; format-pdf-pypdfium2 = [ pypdfium2 ]; format-pptx = [ python-pptx ]; # resemblyzer is not packaged in nixpkgs format-video = format-audio ++ [ librosa scikit-learn soundfile ]; format-web = format-html ++ format-markdown; format-xlsx = [ openpyxl ]; format-xml-jats = format-html ++ [ lxml ]; format-xml-uspto = format-html ++ [ defusedxml ]; # arelle-release is not packaged in nixpkgs format-xml-xbrl = [ ]; models-local = [ accelerate defusedxml docling-ibm-models huggingface-hub torch torchvision ]; models-onnxruntime = [ onnxruntime # onnxruntime-gpu ]; models-remote = [ tritonclient ]; # qwen-vl-utils is not packaged in nixpkgs models-vlm-inline = [ accelerate peft transformers ]; service-client = [ httpx python-dotenv rich typer websockets ];
standard = cli ++ extract-core ++ feat-chunking ++ feat-ocr-rapidocr ++ format-email ++ format-latex ++ format-office ++ format-pdf ++ format-web ++ models-local ++ service-client;
# format-video is deliberately excluded, as upstream does all = standard ++ feat-ocr-easyocr ++ feat-ocr-mac ++ feat-ocr-tesserocr ++ format-audio ++ format-html-render ++ format-xml-jats ++ format-xml-uspto ++ format-xml-xbrl ++ models-onnxruntime ++ models-remote ++ models-vlm-inline; };
pythonImportsCheck = [ "docling" ];
nativeCheckInputs = [ beautifulsoup4 docling-ibm-models docling-parse easyocr ffmpeg-headless gitMinimal mail-parser marko openpyxl pylatexenc pypdfium2 pytest-xdist pytestCheckHook python-docx python-pptx rapidocr rtree scipy websockets writableTmpDirAsHomeHook ];
disabledTests = [ # Downloads models from HuggingFace or fetches remote documents "test_cli_convert" "test_cli_html_fetches_remote_images_with_separate_headers" "test_confidence" "test_convert_path" "test_convert_remote_too_large_filesize_limit_wout_exception" "test_convert_stream" "test_document_timeout" "test_e2e_conversions" "test_e2e_html_conversion_with_images" "test_extraction_with_dict_template" "test_extraction_with_pydantic_class_template" "test_extraction_with_pydantic_instance_template" "test_extraction_with_string_template" "test_fetch_remote_images" "test_fetch_remote_images_with_custom_headers" "test_get_text_from_rect_rotated" "test_load_image_data_enforces_size_limit" "test_page_error_carries_page_no" "test_page_range" "test_parser_backends" "test_pipeline_cache_after_initialize" "test_pipeline_cache_with_chart_extraction" "test_threaded_and_standard_backends_convert_with_standard_pipeline" "test_threaded_pipeline_multiple_documents" "test_threaded_pipeline_page_range" "test_threaded_pipeline_with_pypdfium_backend"
# Require openai-whisper, which is too heavy a dependency to pull in just for these "test_asr_pipeline_conversion" "test_asr_pipeline_with_silent_audio" "test_has_text_and_determine_status_helpers" "test_native_and_mlx_transcribe_language_handling" "test_native_distil_artifacts_path_missing_checkpoint_raises" "test_native_init_with_artifacts_path_and_device_logging" "test_native_run_failure_sets_status" "test_native_run_success_with_bytesio_builds_document"
# The sandbox pins OMP_NUM_THREADS=1, while the test expects the built-in default of 4 "test_accelerator_options"
# Needs LibreOffice on PATH to render DrawingML, and a Pillow with WMF support "test_e2e_docx_conversions" ];
disabledTestPaths = [ # Download models from HuggingFace or fetch remote documents "tests/test_backend_webp.py" "tests/test_code_formula.py" "tests/test_conversion_result_json.py" "tests/test_document_picture_classifier.py" "tests/test_e2e_conversion.py" "tests/test_failed_pages.py" "tests/test_heading_hierarchy_pdf.py" "tests/test_layout_picture_table_overlap.py" "tests/test_pdf_password.py"
# arelle-release is not packaged in nixpkgs "tests/test_backend_xbrl.py"
# tesserocr is packaged without the tessdata it needs to initialize "tests/test_e2e_ocr_conversion.py" ];
meta = { description = "Modular version of the Docling package"; homepage = "https://github.com/docling-project/docling"; changelog = "https://github.com/docling-project/docling/blob/${finalAttrs.src.rev}/CHANGELOG.md"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ GaetanLepage ]; };})