mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-09-30 11:50:06 +00:00
python3Packages.docling-core: 2.73.0 -> 2.90.0 (#549079)
This commit is contained in:
@@ -7,6 +7,7 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "owocr";
|
||||
version = "1.26.8";
|
||||
pyproject = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AuroraWright";
|
||||
@@ -62,7 +63,9 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
||||
meta = {
|
||||
description = "Optical character recognition for Japanese text";
|
||||
homepage = "https://github.com/AuroraWright/owocr";
|
||||
changelog = "https://github.com/AuroraWright/owocr/releases/tag/${finalAttrs.src.tag}";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [ sigmanificient ];
|
||||
mainProgram = "owocr";
|
||||
};
|
||||
})
|
||||
|
||||
@@ -10,14 +10,15 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "azure-ai-vision-imageanalysis";
|
||||
version = "39.0.0";
|
||||
version = "1.0.0";
|
||||
pyproject = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Azure";
|
||||
repo = "azure-sdk-for-python";
|
||||
tag = "azure-mgmt-containerservice_${finalAttrs.version}";
|
||||
hash = "sha256-zufXc8LR4STHi/jjV0bcLsifcHIif2m+3Q/KZlsSkRw=";
|
||||
tag = "azure-ai-vision-imageanalysis_${finalAttrs.version}";
|
||||
hash = "sha256-gkOKD7koHmsApnylnlQ+/PkbhyUKwigeawznPlU1jvM=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/sdk/vision/azure-ai-vision-imageanalysis";
|
||||
@@ -37,6 +38,7 @@ buildPythonPackage (finalAttrs: {
|
||||
meta = {
|
||||
description = "Azure Image Analysis client library for Python";
|
||||
homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/vision/azure-ai-vision-imageanalysis";
|
||||
changelog = "https://github.com/Azure/azure-sdk-for-python/blob/${finalAttrs.src.tag}/sdk/vision/azure-ai-vision-imageanalysis/CHANGELOG.md";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ sigmanificient ];
|
||||
};
|
||||
|
||||
@@ -2,7 +2,11 @@
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
|
||||
# build-system
|
||||
poetry-core,
|
||||
|
||||
# dependencies
|
||||
certifi,
|
||||
docling-core,
|
||||
platformdirs,
|
||||
@@ -20,18 +24,18 @@
|
||||
anyio,
|
||||
fastapi,
|
||||
uvicorn,
|
||||
pytestCheckHook,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "deepsearch-toolkit";
|
||||
version = "2.0.1";
|
||||
pyproject = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "DS4SD";
|
||||
repo = "deepsearch-toolkit";
|
||||
tag = "v${version}";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-nrz9pvyA5gPIaKt6CsJOB9cLy3sXiWW5e1Rk4vtNIY8=";
|
||||
};
|
||||
|
||||
@@ -61,8 +65,7 @@ buildPythonPackage rec {
|
||||
"urllib3"
|
||||
];
|
||||
|
||||
optional-dependencies = rec {
|
||||
all = api;
|
||||
optional-dependencies = {
|
||||
api = [
|
||||
anyio
|
||||
fastapi
|
||||
@@ -70,25 +73,19 @@ buildPythonPackage rec {
|
||||
];
|
||||
};
|
||||
|
||||
pythonImportsCheck = [
|
||||
"deepsearch"
|
||||
];
|
||||
pythonImportsCheck = [ "deepsearch" ];
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
disabledTests = [
|
||||
# Tests require the creation of a deepsearch profile
|
||||
"test_project_listing"
|
||||
"test_system_info"
|
||||
];
|
||||
# The remaining tests either require the creation of a deepsearch profile, or
|
||||
# exercise the deprecated `export_to_markdown`, which relies on the legacy
|
||||
# document models docling-core removed in favor of empty import shims:
|
||||
# https://github.com/docling-project/docling-core/pull/644
|
||||
doCheck = false;
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/DS4SD/deepsearch-toolkit/blob/${src.tag}/CHANGELOG.md";
|
||||
changelog = "https://github.com/DS4SD/deepsearch-toolkit/blob/${finalAttrs.src.tag}/CHANGELOG.md";
|
||||
description = "Interact with the Deep Search platform for new knowledge explorations and discoveries";
|
||||
homepage = "https://github.com/DS4SD/deepsearch-toolkit";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
67
pkgs/development/python-modules/doclang/default.nix
Normal file
67
pkgs/development/python-modules/doclang/default.nix
Normal file
@@ -0,0 +1,67 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
|
||||
# build-system
|
||||
setuptools,
|
||||
|
||||
# dependencies
|
||||
lxml,
|
||||
typer,
|
||||
|
||||
# optional-dependencies
|
||||
saxonche,
|
||||
|
||||
# tests
|
||||
pytestCheckHook,
|
||||
python-docx,
|
||||
versionCheckHook,
|
||||
}:
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "doclang";
|
||||
version = "0.7.3";
|
||||
pyproject = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "doclang-project";
|
||||
repo = "doclang";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-U5QuYCTB2OTugfmvskMnoA71u1DUEVMZTi9H7C7PYEY=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
setuptools
|
||||
];
|
||||
|
||||
dependencies = [
|
||||
lxml
|
||||
typer
|
||||
];
|
||||
|
||||
optional-dependencies = {
|
||||
schematron-saxon = [
|
||||
saxonche
|
||||
];
|
||||
};
|
||||
|
||||
pythonImportsCheck = [ "doclang" ];
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
python-docx
|
||||
saxonche
|
||||
versionCheckHook
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "DocLang spec and reference toolkit";
|
||||
homepage = "https://github.com/doclang-project/doclang";
|
||||
changelog = "https://github.com/doclang-project/doclang/blob/${finalAttrs.src.rev}/CHANGELOG.md";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [ GaetanLepage ];
|
||||
mainProgram = "doclang";
|
||||
};
|
||||
})
|
||||
@@ -9,12 +9,14 @@
|
||||
|
||||
# dependencies
|
||||
defusedxml,
|
||||
doclang,
|
||||
jsonref,
|
||||
jsonschema,
|
||||
latex2mathml,
|
||||
pandas,
|
||||
pillow,
|
||||
pydantic,
|
||||
pydantic-settings,
|
||||
pyyaml,
|
||||
semchunk,
|
||||
tabulate,
|
||||
@@ -26,20 +28,24 @@
|
||||
# tests
|
||||
gitpython,
|
||||
jsondiff,
|
||||
opencv-python-headless,
|
||||
pytestCheckHook,
|
||||
requests,
|
||||
saxonche,
|
||||
universal-pathlib,
|
||||
}:
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "docling-core";
|
||||
version = "2.73.0";
|
||||
version = "2.90.0";
|
||||
pyproject = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "docling-project";
|
||||
repo = "docling-core";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-aK+XHZjKsmFPgRv0oDed1CdBwZags/zcALumgcfQjjY=";
|
||||
hash = "sha256-giPdZKVwR+Gvo4hpn/hUhACMuZwCEqhZwqph+wOrqgk=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
@@ -50,16 +56,19 @@ buildPythonPackage (finalAttrs: {
|
||||
pythonRelaxDeps = [
|
||||
"defusedxml"
|
||||
"pillow"
|
||||
"pydantic-settings"
|
||||
"typer"
|
||||
];
|
||||
dependencies = [
|
||||
defusedxml
|
||||
doclang
|
||||
jsonref
|
||||
jsonschema
|
||||
latex2mathml
|
||||
pandas
|
||||
pillow
|
||||
pydantic
|
||||
pydantic-settings
|
||||
pyyaml
|
||||
semchunk
|
||||
tabulate
|
||||
@@ -74,22 +83,31 @@ buildPythonPackage (finalAttrs: {
|
||||
nativeCheckInputs = [
|
||||
gitpython
|
||||
jsondiff
|
||||
# `ImageRef.from_pil` encodes PNGs with OpenCV when available, and the test
|
||||
# reference files are generated with it: https://github.com/docling-project/docling-core/pull/562
|
||||
opencv-python-headless
|
||||
pytestCheckHook
|
||||
requests
|
||||
saxonche
|
||||
universal-pathlib
|
||||
];
|
||||
|
||||
disabledTestPaths = [
|
||||
# attempts to download models
|
||||
"test/test_chunk_expander.py"
|
||||
"test/test_code_chunker.py"
|
||||
"test/test_code_chunking_strategy.py"
|
||||
"test/test_hybrid_chunker.py"
|
||||
"test/test_line_chunker.py"
|
||||
|
||||
# Requires unpackaged dclq
|
||||
"packages/dclq/tests/test_cli.py"
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/docling-project/docling-core/blob/${finalAttrs.src.tag}/CHANGELOG.md";
|
||||
description = "Python library to define and validate data types in Docling";
|
||||
homepage = "https://github.com/docling-project/docling-core";
|
||||
changelog = "https://github.com/docling-project/docling-core/blob/${finalAttrs.src.tag}/CHANGELOG.md";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ ];
|
||||
};
|
||||
|
||||
@@ -30,14 +30,15 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "docling-ibm-models";
|
||||
version = "3.13.2";
|
||||
version = "3.13.3";
|
||||
pyproject = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "docling-project";
|
||||
repo = "docling-ibm-models";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-PYIcsKffrsZl4f9SFinUdrvUVEXm1fO/n7ZxXuiiByU=";
|
||||
hash = "sha256-b//8cPXEPGNYXVd6wAQcNDh240i3gjdRPFzz4tYfeUk=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
||||
@@ -3,92 +3,131 @@
|
||||
stdenv,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
pythonAtLeast,
|
||||
pythonOlder,
|
||||
|
||||
# build-system
|
||||
hatchling,
|
||||
poetry-core,
|
||||
|
||||
# dependencies
|
||||
docling,
|
||||
pydantic-settings,
|
||||
typer,
|
||||
boto3,
|
||||
pandas,
|
||||
fastparquet,
|
||||
pyarrow,
|
||||
docling-slim,
|
||||
httpx,
|
||||
pandas,
|
||||
pydantic-settings,
|
||||
|
||||
# optional dependencies
|
||||
ray,
|
||||
# optional-dependencies
|
||||
# rq:
|
||||
rq,
|
||||
msgpack,
|
||||
# ray:
|
||||
redis,
|
||||
psutil,
|
||||
ray,
|
||||
# gdrive:
|
||||
google-api-python-client,
|
||||
google-auth-oauthlib,
|
||||
# gcloudstorage:
|
||||
google-cloud-storage,
|
||||
# azure:
|
||||
azure-storage-blob,
|
||||
# opensearch:
|
||||
opensearch-py,
|
||||
|
||||
# tests
|
||||
pytestCheckHook,
|
||||
aiohttp,
|
||||
pytest-asyncio,
|
||||
pytestCheckHook,
|
||||
starlette,
|
||||
redisTestHook,
|
||||
writableTmpDirAsHomeHook,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "docling-jobkit";
|
||||
version = "1.8.1";
|
||||
version = "3.2.0";
|
||||
pyproject = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "docling-project";
|
||||
repo = "docling-jobkit";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-9DzQY/XMmx/8XP1bMYZYl+Bp7AVcYfuv3MtO6lvQ/24=";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-4OUNDn90jGWqHcs9QPpOKqYnKDxH+N/YUeszY21nhMo=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
hatchling
|
||||
poetry-core
|
||||
];
|
||||
|
||||
dependencies = [
|
||||
docling
|
||||
pydantic-settings
|
||||
typer
|
||||
boto3
|
||||
pandas
|
||||
fastparquet
|
||||
pyarrow
|
||||
httpx
|
||||
pythonRelaxDeps = [
|
||||
"pandas"
|
||||
];
|
||||
dependencies = [
|
||||
boto3
|
||||
docling-slim
|
||||
httpx
|
||||
pandas
|
||||
pydantic-settings
|
||||
]
|
||||
++ docling-slim.optional-dependencies.standard;
|
||||
|
||||
optional-dependencies = {
|
||||
ray = [ ray ];
|
||||
vlm = docling-slim.optional-dependencies.models-vlm-inline;
|
||||
rq = [
|
||||
rq
|
||||
msgpack
|
||||
];
|
||||
ray = [
|
||||
msgpack
|
||||
psutil
|
||||
ray
|
||||
]
|
||||
++ ray.optional-dependencies.serve
|
||||
++ redis.optional-dependencies.hiredis
|
||||
++ lib.optionals ((pythonAtLeast "3.11") && (pythonOlder "3.14")) [
|
||||
# cloudflare-sdk
|
||||
];
|
||||
gdrive = [
|
||||
google-api-python-client
|
||||
google-auth-oauthlib
|
||||
];
|
||||
gcloudstorage = [
|
||||
google-cloud-storage
|
||||
];
|
||||
azure = [
|
||||
azure-storage-blob
|
||||
];
|
||||
opensearch = [
|
||||
opensearch-py
|
||||
];
|
||||
};
|
||||
|
||||
pythonRelaxDeps = [
|
||||
"boto3"
|
||||
"pandas"
|
||||
"pyarrow"
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"docling"
|
||||
"docling_jobkit"
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
aiohttp
|
||||
pytest-asyncio
|
||||
pytestCheckHook
|
||||
ray
|
||||
redisTestHook
|
||||
starlette
|
||||
writableTmpDirAsHomeHook
|
||||
]
|
||||
++ optional-dependencies.rq;
|
||||
++ lib.concatAttrValues finalAttrs.passthru.optional-dependencies;
|
||||
|
||||
disabledTests = [
|
||||
# requires network access
|
||||
"test_chunk_file"
|
||||
"test_chunker_manager_shared_across_workers"
|
||||
"test_clear_converters_clears_caches"
|
||||
"test_convert_file"
|
||||
"test_convert_warmup"
|
||||
"test_convert_url"
|
||||
"test_convert_warmup"
|
||||
"test_convert_with_callbacks"
|
||||
"test_replicated_convert"
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
@@ -97,11 +136,13 @@ buildPythonPackage rec {
|
||||
"test_options_validator"
|
||||
];
|
||||
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/docling-project/docling-jobkit/blob/${src.tag}/CHANGELOG.md";
|
||||
description = "Running a distributed job processing documents with Docling";
|
||||
homepage = "https://github.com/docling-project/docling-jobkit";
|
||||
changelog = "https://github.com/docling-project/docling-jobkit/blob/${finalAttrs.src.tag}/CHANGELOG.md";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ codgician ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -2,108 +2,110 @@
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
|
||||
# build-system
|
||||
cmake,
|
||||
pkg-config,
|
||||
cxxopts,
|
||||
setuptools,
|
||||
pybind11,
|
||||
zlib,
|
||||
nlohmann_json,
|
||||
utf8cpp,
|
||||
setuptools,
|
||||
|
||||
# nativeBuildInputs
|
||||
pkg-config,
|
||||
|
||||
# buildInputs
|
||||
blend2d,
|
||||
cxxopts,
|
||||
freetype,
|
||||
lcms2,
|
||||
libjpeg,
|
||||
qpdf,
|
||||
loguru-cpp,
|
||||
# python dependencies
|
||||
tabulate,
|
||||
nlohmann_json,
|
||||
openjpeg,
|
||||
qpdf,
|
||||
utf8cpp,
|
||||
zlib,
|
||||
|
||||
# dependencies
|
||||
docling-core,
|
||||
pillow,
|
||||
pydantic,
|
||||
docling-core,
|
||||
pytestCheckHook,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "docling-parse";
|
||||
version = "5.0.0";
|
||||
version = "7.8.1";
|
||||
pyproject = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "docling-project";
|
||||
repo = "docling-parse";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-qxD3ryU1jXf8Gm5/IiG2NTOnRgA6HADPfgBj6Kn+Pj4=";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-WTXWIJWwxfBdPnoCvo1sq7o9itG/MUX3FNz1GGtvaVo=";
|
||||
};
|
||||
|
||||
# cibuildwheel and delocate are listed as build-system dependencies but are only used in CI to
|
||||
# build wheels.
|
||||
postPatch = ''
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace-fail \
|
||||
'"cmake>=3.27.0,<4.0.0"' \
|
||||
'"cmake>=3.27.0"'
|
||||
"cmake>=3.27.0,<4.0.0" \
|
||||
"cmake>=3.27.0" \
|
||||
--replace-fail \
|
||||
"\"cibuildwheel>=2.19.2,<4.0.0; python_version >= '3.11'\"," \
|
||||
"" \
|
||||
--replace-fail \
|
||||
'"delocate>=0.11.0,<1.0.0",' \
|
||||
""
|
||||
'';
|
||||
|
||||
dontUseCmakeConfigure = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
];
|
||||
|
||||
build-system = [
|
||||
cmake
|
||||
pybind11
|
||||
setuptools
|
||||
];
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = "-I${lib.getDev utf8cpp}/include/utf8cpp";
|
||||
env = {
|
||||
NIX_CFLAGS_COMPILE = "-I${lib.getDev utf8cpp}/include/utf8cpp";
|
||||
USE_SYSTEM_DEPS = "ON";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
pybind11
|
||||
blend2d
|
||||
cxxopts
|
||||
freetype
|
||||
lcms2
|
||||
libjpeg
|
||||
loguru-cpp
|
||||
nlohmann_json
|
||||
openjpeg
|
||||
qpdf
|
||||
utf8cpp
|
||||
zlib
|
||||
];
|
||||
|
||||
env.USE_SYSTEM_DEPS = true;
|
||||
|
||||
cmakeFlags = [
|
||||
"-DUSE_SYSTEM_DEPS=True"
|
||||
];
|
||||
|
||||
dependencies = [
|
||||
tabulate
|
||||
docling-core
|
||||
pillow
|
||||
pydantic
|
||||
docling-core
|
||||
];
|
||||
|
||||
pythonRelaxDeps = [
|
||||
"pydantic"
|
||||
"pillow"
|
||||
];
|
||||
pythonImportsCheck = [ "docling_parse" ];
|
||||
|
||||
# Listed as runtime dependencies but only used in CI to build wheels
|
||||
preBuild = ''
|
||||
sed -i '/cibuildwheel/d' pyproject.toml
|
||||
sed -i '/delocate/d' pyproject.toml
|
||||
'';
|
||||
|
||||
pythonImportsCheck = [
|
||||
"docling_parse"
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
];
|
||||
# The whole test suite requires the test corpus, which `tests/conftest.py` unconditionally
|
||||
# downloads from HuggingFace in `pytest_sessionstart`.
|
||||
doCheck = false;
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/DS4SD/docling-parse/blob/${src.tag}/CHANGELOG.md";
|
||||
changelog = "https://github.com/DS4SD/docling-parse/blob/${finalAttrs.src.tag}/CHANGELOG.md";
|
||||
description = "Simple package to extract text with coordinates from programmatic PDFs";
|
||||
homepage = "https://github.com/DS4SD/docling-parse";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ ];
|
||||
# error: no matching conversion for functional-style cast from 'bool' to 'nlohmann::basic_json<>'
|
||||
# See https://github.com/docling-project/docling-parse/issues/172 for context
|
||||
broken = true;
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -2,65 +2,88 @@
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
|
||||
# build-system
|
||||
hatchling,
|
||||
setuptools-scm,
|
||||
# python dependencies
|
||||
docling,
|
||||
|
||||
# dependencies
|
||||
docling-core,
|
||||
docling-jobkit,
|
||||
docling-mcp,
|
||||
docling-slim,
|
||||
fastapi,
|
||||
httpx,
|
||||
opentelemetry-api,
|
||||
opentelemetry-exporter-otlp,
|
||||
opentelemetry-exporter-prometheus,
|
||||
opentelemetry-instrumentation-fastapi,
|
||||
opentelemetry-sdk,
|
||||
prometheus-client,
|
||||
pydantic,
|
||||
pydantic-settings,
|
||||
python-multipart,
|
||||
scalar-fastapi,
|
||||
typer,
|
||||
uvicorn,
|
||||
websockets,
|
||||
|
||||
# optional-dependencies
|
||||
# ui:
|
||||
gradio,
|
||||
# tesserocr:
|
||||
tesserocr,
|
||||
typer,
|
||||
# easyocr:
|
||||
easyocr,
|
||||
# rapidocr:
|
||||
rapidocr,
|
||||
onnxruntime,
|
||||
torch,
|
||||
torchvision,
|
||||
gradio,
|
||||
nodejs,
|
||||
which,
|
||||
# flash-attn:
|
||||
flash-attn,
|
||||
|
||||
# tests
|
||||
versionCheckHook,
|
||||
|
||||
withUI ? false,
|
||||
withTesserocr ? false,
|
||||
withRapidocr ? false,
|
||||
withCPU ? false,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "docling-serve";
|
||||
version = "1.10.0";
|
||||
version = "1.29.0";
|
||||
pyproject = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "docling-project";
|
||||
repo = "docling-serve";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-g0ATehTRtrqgTjvMTs+yvFdFwXTZ8AWsO+Hljwlcbto=";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-sYpi7vgeUH2xw2Jq8Rgou8SsS8aq+TWgq29gqv/xNnU=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
hatchling
|
||||
setuptools-scm
|
||||
];
|
||||
|
||||
pythonRelaxDeps = [
|
||||
"websockets"
|
||||
"fastapi"
|
||||
"opentelemetry-instrumentation-fastapi"
|
||||
];
|
||||
|
||||
pythonRemoveDeps = [
|
||||
"mlx-vlm" # not yet available on nixpkgs
|
||||
];
|
||||
|
||||
dependencies = [
|
||||
docling
|
||||
docling-core
|
||||
docling-jobkit
|
||||
docling-mcp
|
||||
docling-slim
|
||||
fastapi
|
||||
httpx
|
||||
opentelemetry-api
|
||||
opentelemetry-exporter-otlp
|
||||
opentelemetry-exporter-prometheus
|
||||
opentelemetry-instrumentation-fastapi
|
||||
opentelemetry-sdk
|
||||
prometheus-client
|
||||
pydantic
|
||||
pydantic-settings
|
||||
python-multipart
|
||||
scalar-fastapi
|
||||
@@ -68,27 +91,38 @@ buildPythonPackage rec {
|
||||
uvicorn
|
||||
websockets
|
||||
]
|
||||
++ lib.optionals withUI optional-dependencies.ui
|
||||
++ lib.optionals withTesserocr optional-dependencies.tesserocr
|
||||
++ lib.optionals withRapidocr optional-dependencies.rapidocr
|
||||
++ lib.optionals withCPU optional-dependencies.cpu;
|
||||
++ docling-slim.optional-dependencies.standard
|
||||
++ docling-slim.optional-dependencies.service-client
|
||||
++ docling-slim.optional-dependencies.models-remote
|
||||
++ docling-slim.optional-dependencies.format-opendocument
|
||||
++ docling-jobkit.optional-dependencies.rq
|
||||
++ docling-jobkit.optional-dependencies.ray
|
||||
++ docling-jobkit.optional-dependencies.azure
|
||||
++ docling-jobkit.optional-dependencies.gcloudstorage
|
||||
++ docling-jobkit.optional-dependencies.gdrive
|
||||
++ fastapi.optional-dependencies.standard
|
||||
++ uvicorn.optional-dependencies.standard
|
||||
++ lib.optionals withUI finalAttrs.passthru.optional-dependencies.ui
|
||||
++ lib.optionals withTesserocr finalAttrs.passthru.optional-dependencies.tesserocr
|
||||
++ lib.optionals withRapidocr finalAttrs.passthru.optional-dependencies.rapidocr
|
||||
++ lib.optionals withCPU finalAttrs.passthru.optional-dependencies.cpu;
|
||||
|
||||
optional-dependencies = {
|
||||
ui = [
|
||||
gradio
|
||||
nodejs
|
||||
which
|
||||
];
|
||||
tesserocr = [
|
||||
tesserocr
|
||||
];
|
||||
easyocr = [
|
||||
easyocr
|
||||
];
|
||||
rapidocr = [
|
||||
rapidocr
|
||||
onnxruntime
|
||||
];
|
||||
cpu = [
|
||||
torch
|
||||
torchvision
|
||||
flash-attn = [
|
||||
flash-attn
|
||||
];
|
||||
};
|
||||
|
||||
@@ -96,15 +130,17 @@ buildPythonPackage rec {
|
||||
"docling_serve"
|
||||
];
|
||||
|
||||
# Require network
|
||||
doCheck = false;
|
||||
# Python tests require network
|
||||
nativeCheckInputs = [
|
||||
versionCheckHook
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/docling-project/docling-serve/blob/${src.tag}/CHANGELOG.md";
|
||||
description = "Running Docling as an API service";
|
||||
homepage = "https://github.com/docling-project/docling-serve";
|
||||
changelog = "https://github.com/docling-project/docling-serve/blob/${finalAttrs.src.tag}/CHANGELOG.md";
|
||||
license = lib.licenses.mit;
|
||||
mainProgram = "docling-serve";
|
||||
maintainers = [ ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
368
pkgs/development/python-modules/docling-slim/default.nix
Normal file
368
pkgs/development/python-modules/docling-slim/default.nix
Normal file
@@ -0,0 +1,368 @@
|
||||
{
|
||||
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,
|
||||
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
|
||||
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 ];
|
||||
};
|
||||
})
|
||||
@@ -1,187 +1,47 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
docling-slim,
|
||||
|
||||
# build system
|
||||
poetry-core,
|
||||
|
||||
# dependencies
|
||||
accelerate,
|
||||
beautifulsoup4,
|
||||
certifi,
|
||||
docling-core,
|
||||
docling-ibm-models,
|
||||
docling-parse,
|
||||
easyocr,
|
||||
filetype,
|
||||
huggingface-hub,
|
||||
lxml,
|
||||
marko,
|
||||
# ocrmac # not yet packaged
|
||||
onnxruntime,
|
||||
openpyxl,
|
||||
pandas,
|
||||
pillow,
|
||||
pluggy,
|
||||
pydantic,
|
||||
pydantic-settings,
|
||||
pylatexenc,
|
||||
pypdfium2,
|
||||
python-docx,
|
||||
python-pptx,
|
||||
rapidocr,
|
||||
requests,
|
||||
rtree,
|
||||
scipy,
|
||||
tesserocr,
|
||||
tqdm,
|
||||
transformers,
|
||||
typer,
|
||||
|
||||
# optional dependencies
|
||||
# mkdocs-click # not yet packaged
|
||||
mkdocs-jupyter,
|
||||
mkdocs-material,
|
||||
mkdocstrings,
|
||||
hatchling,
|
||||
|
||||
# tests
|
||||
pytestCheckHook,
|
||||
writableTmpDirAsHomeHook,
|
||||
versionCheckHook,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "docling";
|
||||
version = "2.69.1";
|
||||
inherit (docling-slim) version src;
|
||||
pyproject = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "docling-project";
|
||||
repo = "docling";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-r7jAah/tqLylPyyzrK0NW2ok66NVdb/V/YLV95McGC4=";
|
||||
};
|
||||
sourceRoot = "${finalAttrs.src.name}/packages/docling";
|
||||
|
||||
build-system = [
|
||||
poetry-core
|
||||
hatchling
|
||||
];
|
||||
|
||||
# Meta-package: it ships no Python module of its own, only the console scripts. `docling` itself
|
||||
# is provided by docling-slim, which upstream pulls in with the `standard` extra.
|
||||
dependencies = [
|
||||
accelerate
|
||||
beautifulsoup4
|
||||
certifi
|
||||
docling-core
|
||||
docling-ibm-models
|
||||
docling-parse
|
||||
easyocr
|
||||
filetype
|
||||
huggingface-hub
|
||||
lxml
|
||||
marko
|
||||
# ocrmac # not yet packaged
|
||||
onnxruntime
|
||||
openpyxl
|
||||
pandas
|
||||
pillow
|
||||
pluggy
|
||||
pydantic
|
||||
pydantic-settings
|
||||
pylatexenc
|
||||
pypdfium2
|
||||
python-docx
|
||||
python-pptx
|
||||
rapidocr
|
||||
requests
|
||||
rtree
|
||||
scipy
|
||||
tesserocr
|
||||
tqdm
|
||||
transformers
|
||||
typer
|
||||
];
|
||||
docling-slim
|
||||
]
|
||||
++ docling-slim.optional-dependencies.standard;
|
||||
|
||||
pythonRelaxDeps = [
|
||||
"lxml"
|
||||
"pypdfium2"
|
||||
"pillow"
|
||||
];
|
||||
|
||||
optional-dependencies = {
|
||||
ocrmac = [
|
||||
# ocrmac # not yet packaged
|
||||
];
|
||||
rapidocr = [
|
||||
onnxruntime
|
||||
rapidocr
|
||||
];
|
||||
tesserocr = [
|
||||
tesserocr
|
||||
];
|
||||
|
||||
docs = [
|
||||
# mkdocs-click # not yet packaged
|
||||
mkdocs-jupyter
|
||||
mkdocs-material
|
||||
mkdocstrings
|
||||
# griffle-pydantic
|
||||
];
|
||||
};
|
||||
pythonImportsCheck = [ "docling" ];
|
||||
|
||||
# No python tests in this subpackage, they all live in docling-slim
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
writableTmpDirAsHomeHook
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"docling"
|
||||
];
|
||||
|
||||
disabledTests = [
|
||||
"test_e2e_pdfs_conversions" # AssertionError: ## TableFormer: Table Structure Understanding with Transf
|
||||
"test_e2e_conversions" # RuntimeError: Tesseract is not available
|
||||
|
||||
# AssertionError
|
||||
# assert doc.export_to_markdown() == pair[1], f"Error in case {idx}"
|
||||
"test_ordered_lists"
|
||||
|
||||
# AssertionError: export to md
|
||||
"test_e2e_html_conversions"
|
||||
|
||||
# AssertionError: assert 'Unordered li...d code block:' == 'Unordered li...d code block:'
|
||||
"test_convert_valid"
|
||||
|
||||
# AssertionError: Markdown file mismatch against groundtruth pftaps057006474.md
|
||||
"test_patent_groundtruth"
|
||||
|
||||
# huggingface_hub.errors.LocalEntryNotFoundError: An error happened
|
||||
"test_cli_convert"
|
||||
"test_code_and_formula_conversion"
|
||||
"test_picture_classifier"
|
||||
"test_convert_path"
|
||||
"test_convert_stream"
|
||||
"test_compare_legacy_output"
|
||||
"test_ocr_coverage_threshold"
|
||||
"test_formula_conversion_with_page_range"
|
||||
|
||||
# requires network access
|
||||
"test_page_range"
|
||||
"test_parser_backends"
|
||||
"test_confidence"
|
||||
"test_e2e_webp_conversions"
|
||||
"test_asr_pipeline_conversion"
|
||||
"test_threaded_pipeline"
|
||||
"test_pipeline_comparison"
|
||||
|
||||
# AssertionError: pred_itxt==true_itxt
|
||||
"test_e2e_valid_csv_conversions"
|
||||
versionCheckHook
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Get your documents ready for gen AI";
|
||||
description = "SDK and CLI for parsing PDF, DOCX, HTML, and more, to a unified document representation for powering downstream workflows such as gen AI applications";
|
||||
homepage = "https://github.com/DS4SD/docling";
|
||||
changelog = "https://github.com/DS4SD/docling/blob/${src.tag}/CHANGELOG.md";
|
||||
changelog = "https://github.com/DS4SD/docling/blob/${finalAttrs.src.tag}/CHANGELOG.md";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ happysalada ];
|
||||
mainProgram = "docling";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
|
||||
fetchpatch,
|
||||
fetchzip,
|
||||
replaceVars,
|
||||
fetchurl,
|
||||
linkFarm,
|
||||
|
||||
setuptools,
|
||||
setuptools-scm,
|
||||
colorlog,
|
||||
pyclipper,
|
||||
opencv-python,
|
||||
@@ -23,75 +23,55 @@
|
||||
requests,
|
||||
}:
|
||||
let
|
||||
version = "3.8.1";
|
||||
version = "3.9.2";
|
||||
|
||||
# The models bundled into the wheel are the ones selected by the defaults in
|
||||
# `python/rapidocr/config.yaml`. Run `python tools/prepare_wheel_assets.py --skip-manifest-in`
|
||||
# from `python/` after a bump to check whether that selection changed; it prints the resolved
|
||||
# URLs and their checksums.
|
||||
models = linkFarm "rapidocr-models" {
|
||||
"PP-OCRv6_det_small.onnx" = fetchurl {
|
||||
url = "https://www.modelscope.cn/models/RapidAI/RapidOCR/resolve/v${version}/onnx/PP-OCRv6/det/PP-OCRv6_det_small.onnx";
|
||||
hash = "sha256-CQ8Eq82dmnSYvE6/Z35Mub3OH+QZfdt+Up8e9E4f+U8=";
|
||||
};
|
||||
"ch_ppocr_mobile_v2.0_cls_mobile.onnx" = fetchurl {
|
||||
url = "https://www.modelscope.cn/models/RapidAI/RapidOCR/resolve/v${version}/onnx/PP-OCRv4/cls/ch_ppocr_mobile_v2.0_cls_mobile.onnx";
|
||||
hash = "sha256-5HrO32YyMPiGP/GrDmTdLYK4OPzrWVcUbasYWonWIVw=";
|
||||
};
|
||||
"PP-OCRv6_rec_small.onnx" = fetchurl {
|
||||
url = "https://www.modelscope.cn/models/RapidAI/RapidOCR/resolve/v${version}/onnx/PP-OCRv6/rec/PP-OCRv6_rec_small.onnx";
|
||||
hash = "sha256-bzJyRrUDiPPBdq4wS9lXZ+ptwMmukhU++MviELPBSIQ=";
|
||||
};
|
||||
};
|
||||
in
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "rapidocr";
|
||||
inherit version;
|
||||
pyproject = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "RapidAI";
|
||||
repo = "RapidOCR";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-keAR7H/qn0Q+Vo0usp69dWZO5QWB60EgU7d9vspQ+2w=";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-EdiYf8cM1+byEECK+3sRc7MC075BQV/PKIf/fC2Y1Lc=";
|
||||
};
|
||||
|
||||
models =
|
||||
fetchzip {
|
||||
url = "https://github.com/RapidAI/RapidOCR/releases/download/v1.1.0/required_for_whl_v1.3.0.zip";
|
||||
hash = "sha256-j/0nzyvu/HfNTt5EZ+2Phe5dkyPOdQw/OZTz0yS63aA=";
|
||||
stripRoot = false;
|
||||
}
|
||||
+ "/required_for_whl_v1.3.0/resources/models";
|
||||
in
|
||||
buildPythonPackage {
|
||||
pname = "rapidocr";
|
||||
inherit version src;
|
||||
pyproject = true;
|
||||
sourceRoot = "${finalAttrs.src.name}/python";
|
||||
|
||||
sourceRoot = "${src.name}/python";
|
||||
# Upstream ships an empty `models` directory and downloads the models at runtime. Pre-populate it
|
||||
# so that the default configuration works without network access.
|
||||
postPatch = ''
|
||||
ln -s ${models}/* rapidocr/models
|
||||
'';
|
||||
|
||||
# HACK:
|
||||
# Upstream uses a very unconventional structure to organize the packages, and we have to coax the
|
||||
# existing infrastructure to work with it.
|
||||
# See https://github.com/RapidAI/RapidOCR/blob/02829ef986bc2a5c4f33e9c45c9267bcf2d07a1d/.github/workflows/gen_whl_to_pypi_rapidocr_ort.yml#L80-L92
|
||||
# for the "intended" way of building this package.
|
||||
|
||||
# The setup.py supplied by upstream tries to determine the current version by
|
||||
# fetching the latest version of the package from PyPI, and then bumping the version number.
|
||||
# This is not allowed in the Nix build environment as we do not have internet access,
|
||||
# hence we patch that out and get the version from the build environment directly.
|
||||
patches = [
|
||||
(replaceVars ./setup-py-override-version-checking.patch {
|
||||
inherit version;
|
||||
})
|
||||
# Fix type error in Immich which is caused by passing null to Path() when model_root_dir is the default null
|
||||
(fetchpatch {
|
||||
url = "https://github.com/RapidAI/RapidOCR/commit/57dfac08d8de63c4c00d21a1ab14a4a3b5c01975.patch";
|
||||
stripLen = 1;
|
||||
hash = "sha256-G49mTvBOm20BFOll4Pc0X397ZABT1tWMXd8nlDjBr7E=";
|
||||
})
|
||||
build-system = [
|
||||
setuptools
|
||||
setuptools-scm
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
mkdir -p rapidocr/models
|
||||
|
||||
ln -s ${models}/* rapidocr/models
|
||||
|
||||
echo "from .rapidocr.main import RapidOCR, VisRes" > __init__.py
|
||||
'';
|
||||
|
||||
# Upstream expects the source files to be under rapidocr/rapidocr
|
||||
# instead of rapidocr for the wheel to build correctly.
|
||||
preBuild = ''
|
||||
mkdir rapidocr_t
|
||||
mv rapidocr rapidocr_t
|
||||
mv rapidocr_t rapidocr
|
||||
'';
|
||||
|
||||
# Revert the above hack
|
||||
postBuild = ''
|
||||
mv rapidocr rapidocr_t
|
||||
mv rapidocr_t/* .
|
||||
'';
|
||||
|
||||
build-system = [ setuptools ];
|
||||
# setuptools-scm derives the version from the git metadata, which fetchFromGitHub does not keep
|
||||
env.SETUPTOOLS_SCM_PRETEND_VERSION = finalAttrs.version;
|
||||
|
||||
dependencies = [
|
||||
colorlog
|
||||
@@ -116,11 +96,11 @@ buildPythonPackage {
|
||||
doCheck = false;
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/RapidAI/RapidOCR/releases/tag/${src.tag}";
|
||||
description = "Cross platform OCR Library based on OnnxRuntime";
|
||||
homepage = "https://github.com/RapidAI/RapidOCR";
|
||||
changelog = "https://github.com/RapidAI/RapidOCR/releases/tag/${finalAttrs.src.tag}";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [ pluiedev ];
|
||||
mainProgram = "rapidocr";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
diff --git a/setup.py b/setup.py
|
||||
index 16938a4..5167972 100644
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -6,7 +6,6 @@ from pathlib import Path
|
||||
from typing import List, Union
|
||||
|
||||
import setuptools
|
||||
-from get_pypi_latest_version import GetPyPiLatestVersion
|
||||
|
||||
|
||||
def read_txt(txt_path: Union[Path, str]) -> List[str]:
|
||||
@@ -25,20 +24,7 @@ def get_readme():
|
||||
|
||||
|
||||
MODULE_NAME = "rapidocr"
|
||||
-
|
||||
-obtainer = GetPyPiLatestVersion()
|
||||
-try:
|
||||
- latest_version = obtainer(MODULE_NAME)
|
||||
-except Exception as e:
|
||||
- latest_version = "0.0.0"
|
||||
-VERSION_NUM = obtainer.version_add_one(latest_version, add_patch=True)
|
||||
-
|
||||
-if len(sys.argv) > 2:
|
||||
- match_str = " ".join(sys.argv[2:])
|
||||
- matched_versions = obtainer.extract_version(match_str)
|
||||
- if matched_versions:
|
||||
- VERSION_NUM = matched_versions
|
||||
-sys.argv = sys.argv[:2]
|
||||
+VERSION_NUM = "@version@"
|
||||
|
||||
project_urls = {
|
||||
"Documentation": "https://rapidai.github.io/RapidOCRDocs",
|
||||
@@ -5024,6 +5024,8 @@ self: super: with self; {
|
||||
|
||||
dockerspawner = callPackage ../development/python-modules/dockerspawner { };
|
||||
|
||||
doclang = callPackage ../development/python-modules/doclang { };
|
||||
|
||||
docling = callPackage ../development/python-modules/docling { };
|
||||
|
||||
docling-core = callPackage ../development/python-modules/docling-core { };
|
||||
@@ -5040,6 +5042,8 @@ self: super: with self; {
|
||||
|
||||
docling-serve = callPackage ../development/python-modules/docling-serve { };
|
||||
|
||||
docling-slim = callPackage ../development/python-modules/docling-slim { };
|
||||
|
||||
docloud = callPackage ../development/python-modules/docloud { };
|
||||
|
||||
docopt = callPackage ../development/python-modules/docopt { };
|
||||
|
||||
Reference in New Issue
Block a user