python3Packages.rapidocr-onnxruntime: init at 1.4.4

This commit is contained in:
wrvsrx
2025-09-03 20:28:16 +08:00
parent e7fd8f8ca1
commit 3f31d64ddf
3 changed files with 166 additions and 0 deletions
@@ -0,0 +1,133 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
fetchzip,
replaceVars,
setuptools,
pyclipper,
opencv-python,
numpy,
six,
shapely,
pyyaml,
pillow,
onnxruntime,
tqdm,
pytestCheckHook,
requests,
}:
let
version = "1.4.4";
src = fetchFromGitHub {
owner = "RapidAI";
repo = "RapidOCR";
tag = "v${version}";
hash = "sha256-x0VELDKOffxbV3v0aDFJFuDC4YfsGM548XWgINmRc3M=";
};
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-onnxruntime";
inherit version src;
pyproject = true;
sourceRoot = "${src.name}/python";
# 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;
})
];
postPatch = ''
mv setup_onnxruntime.py setup.py
ln -s ${models}/* rapidocr_onnxruntime/models
echo "from .rapidocr_onnxruntime.main import RapidOCR, VisRes" > __init__.py
'';
# Upstream expects the source files to be under rapidocr_onnxruntime/rapidocr_onnxruntime
# instead of rapidocr_onnxruntime for the wheel to build correctly.
preBuild = ''
mkdir rapidocr_onnxruntime_t
mv rapidocr_onnxruntime rapidocr_onnxruntime_t
mv rapidocr_onnxruntime_t rapidocr_onnxruntime
'';
# Revert the above hack
postBuild = ''
mv rapidocr_onnxruntime rapidocr_onnxruntime_t
mv rapidocr_onnxruntime_t/* .
'';
build-system = [ setuptools ];
dependencies = [
pyclipper
opencv-python
numpy
six
shapely
pyyaml
pillow
onnxruntime
tqdm
];
pythonImportsCheck = [ "rapidocr_onnxruntime" ];
nativeCheckInputs = [
pytestCheckHook
requests
];
# These are tests for different backends.
disabledTestPaths = [
"tests/test_vino.py"
"tests/test_paddle.py"
];
disabledTests = [
# Needs Internet access
"test_long_img"
];
# rapidocr-onnxruntime has been renamed to rapidocr by upstream since 2.0.0. However, some packages like open-webui still requires rapidocr-onnxruntime 1.4.4. Therefore we set no auto update here.
# nixpkgs-update: no auto update
passthru.skipBulkUpdate = true;
meta = {
# This seems to be related to https://github.com/microsoft/onnxruntime/issues/10038
# Also some related issue: https://github.com/NixOS/nixpkgs/pull/319053#issuecomment-2167713362
badPlatforms = [ "aarch64-linux" ];
changelog = "https://github.com/RapidAI/RapidOCR/releases/tag/${src.tag}";
description = "Cross platform OCR Library based on OnnxRuntime";
homepage = "https://github.com/RapidAI/RapidOCR";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ wrvsrx ];
mainProgram = "rapidocr_onnxruntime";
};
}
@@ -0,0 +1,31 @@
diff --git i/setup_onnxruntime.py w/setup_onnxruntime.py
index e9572e9..f5f3b32 100644
--- i/setup_onnxruntime.py
+++ w/setup_onnxruntime.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,17 +24,7 @@ def get_readme():
MODULE_NAME = "rapidocr_onnxruntime"
-
-obtainer = GetPyPiLatestVersion()
-latest_version = obtainer(MODULE_NAME)
-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",
+2
View File
@@ -15555,6 +15555,8 @@ self: super: with self; {
rapidocr = callPackage ../development/python-modules/rapidocr { };
rapidocr-onnxruntime = callPackage ../development/python-modules/rapidocr-onnxruntime { };
rapt-ble = callPackage ../development/python-modules/rapt-ble { };
rarfile = callPackage ../development/python-modules/rarfile { inherit (pkgs) libarchive; };