diff --git a/Dockerfile b/Dockerfile index 578058fde2fe9875d912e97662c4252ef4c76820..e4f7e094632316468ad68bf84b894bb4535c87e9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,11 +8,11 @@ ENV TORCH_CUDA_ARCH_LIST=${TORCH_CUDA_ARCH_LIST} RUN --mount=type=cache,target=/root/.cache/pip \ pip install -U pip hatchling "setuptools>=68" --root-user-action ignore -COPY nemo-retriever-ocr /workspace/nemo-retriever-ocr -WORKDIR /workspace/nemo-retriever-ocr +COPY nemotron-ocr /workspace/nemotron-ocr +WORKDIR /workspace/nemotron-ocr # Ensure no prebuilt binaries/artifacts from the host are present -RUN rm -f src/nemo_retriever_ocr_cpp/*.so || true \ +RUN rm -f src/nemotron_ocr_cpp/*.so || true \ && rm -rf build/ dist/ RUN --mount=type=cache,target=/root/.cache/pip \ diff --git a/README.md b/README.md index 660ce49d524495252ac930547a31f0dfa0d7b7e9..75b10f459247eda2e07a1898b1a95b0f151053da 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ tags: - ingestion --- -# NeMo Retriever OCR v1 +# Nemotron OCR v1 ## **Model Overview** @@ -27,15 +27,15 @@ tags: ### **Description** -The NeMo Retriever OCR v1 model is a state-of-the-art text recognition model designed for robust end-to-end optical character recognition (OCR) on complex real-world images. It integrates three core neural network modules: a detector for text region localization, a recognizer for transcription of detected regions, and a relational model for layout and structure analysis. +The Nemotron OCR v1 model is a state-of-the-art text recognition model designed for robust end-to-end optical character recognition (OCR) on complex real-world images. It integrates three core neural network modules: a detector for text region localization, a recognizer for transcription of detected regions, and a relational model for layout and structure analysis. -This model is optimized for a wide variety of OCR tasks, including multi-line, multi-block, and natural scene text, and it supports advanced reading order analysis via its relational model component. NeMo Retriever OCR v1 has been developed to be production-ready and commercially usable, with a focus on speed and accuracy on both document and natural scene images. +This model is optimized for a wide variety of OCR tasks, including multi-line, multi-block, and natural scene text, and it supports advanced reading order analysis via its relational model component. Nemotron OCR v1 has been developed to be production-ready and commercially usable, with a focus on speed and accuracy on both document and natural scene images. -The NeMo Retriever OCR v1 model is part of the NVIDIA NeMo Retriever collection of NIM microservices, which provides state-of-the-art, commercially-ready models and microservices optimized for the lowest latency and highest throughput. It features a production-ready information retrieval pipeline with enterprise support. The models that form the core of this solution have been trained using responsibly selected, auditable data sources. With multiple pre-trained models available as starting points, developers can readily customize them for domain-specific use cases, such as information technology, human resource help assistants, and research & development research assistants. +The Nemotron OCR v1 model is part of the NVIDIA NeMo Retriever collection of NIM microservices, which provides state-of-the-art, commercially-ready models and microservices optimized for the lowest latency and highest throughput. It features a production-ready information retrieval pipeline with enterprise support. The models that form the core of this solution have been trained using responsibly selected, auditable data sources. With multiple pre-trained models available as starting points, developers can readily customize them for domain-specific use cases, such as information technology, human resource help assistants, and research & development research assistants. This model is ready for commercial use. -We are excited to announce the open sourcing of this commercial model. For users interested in deploying this model in production environments, it is also available via the model API in NVIDIA Inference Microservices (NIM) at [nemoretriever-ocr-v1](https://build.nvidia.com/nvidia/nemoretriever-ocr-v1). +We are excited to announce the open sourcing of this commercial model. For users interested in deploying this model in production environments, it is also available via the model API in NVIDIA Inference Microservices (NIM) at [nemotron-ocr-v1](https://build.nvidia.com/nvidia/nemotron-ocr-v1). ### **License/Terms of use** @@ -57,11 +57,11 @@ Global ### Use Case -The **NeMo Retriever OCR v1** model is designed for high-accuracy and high-speed extraction of textual information from images, making it ideal for powering multimodal retrieval systems, Retrieval-Augmented Generation (RAG) pipelines, and agentic applications that require seamless integration of visual and language understanding. Its robust performance and efficiency make it an excellent choice for next-generation AI systems that demand both precision and scalability across diverse real-world content. +The **Nemotron OCR v1** model is designed for high-accuracy and high-speed extraction of textual information from images, making it ideal for powering multimodal retrieval systems, Retrieval-Augmented Generation (RAG) pipelines, and agentic applications that require seamless integration of visual and language understanding. Its robust performance and efficiency make it an excellent choice for next-generation AI systems that demand both precision and scalability across diverse real-world content. ### Release Date -10/23/2025 via https://huggingface.co/nvidia/nemoretriever-ocr-v1 +10/23/2025 via https://huggingface.co/nvidia/nemotron-ocr-v1 ### References @@ -71,7 +71,7 @@ The **NeMo Retriever OCR v1** model is designed for high-accuracy and high-speed **Architecture Type:** Hybrid detector–recognizer with document-level relational modeling -The NeMo Retriever OCR v1 model integrates three specialized neural components: +The Nemotron OCR v1 model integrates three specialized neural components: - **Text Detector:** Utilizes a RegNetY-8GF convolutional backbone for high-accuracy localization of text regions within images. - **Text Recognizer:** Employs a Transformer-based sequence recognizer to transcribe text from detected regions, supporting variable word and line lengths. @@ -163,11 +163,11 @@ git lfs install ``` - Using https ``` -git clone https://huggingface.co/nvidia/nemoretriever-ocr-v1 +git clone https://huggingface.co/nvidia/nemotron-ocr-v1 ``` - Or using ssh ``` -git clone git@hf.co:nvidia/nemoretriever-ocr-v1 +git clone git@hf.co:nvidia/nemotron-ocr-v1 ``` 2. Installation @@ -179,7 +179,7 @@ git clone git@hf.co:nvidia/nemoretriever-ocr-v1 - Run the following command to install the package: ```bash -cd nemo-retriever-ocr +cd nemotron-ocr pip install hatchling pip install -v . ``` @@ -197,7 +197,7 @@ docker run --rm --gpus all nvcr.io/nvidia/pytorch:25.09-py3 nvidia-smi - From the repo root, bring up the service to run the example against the provided image `ocr-example-image.png`: ```bash -docker compose run --rm nemo-retriever-ocr \ +docker compose run --rm nemotron-ocr \ bash -lc "python example.py ocr-example-input-1.png --merge-level paragraph" ``` @@ -212,7 +212,7 @@ Output is saved next to your input image as `-annotated.` on the host 3. Run the model using the following code: ```python -from nemo_retriever_ocr.inference.pipeline import NemoRetrieverOCR +from nemotron_ocr.inference.pipeline import NemoRetrieverOCR ocr = NemoRetrieverOCR() @@ -230,7 +230,7 @@ for pred in predictions: ### Software Integration **Runtime Engine(s):** -- **NeMo Retriever Page Elements v3** NIM +- **NeMo Nemotron OCR V1** NIM **Supported Hardware Microarchitecture Compatibility [List in Alphabetic Order]:** @@ -247,7 +247,7 @@ This AI model can be embedded as an Application Programming Interface (API) call ## Model Version(s): -* `nemoretriever-ocr-v1` +* `nemotron-ocr-v1` ## **Training and Evaluation Datasets:** @@ -267,7 +267,7 @@ The model is trained on a large-scale, curated mix of public and proprietary OCR ### **Evaluation Datasets** -The NeMo Retriever OCR v1 model is evaluated on several NVIDIA internal datasets for various tasks, such as pure OCR, table content extraction, and document retrieval. +The Nemotron OCR v1 model is evaluated on several NVIDIA internal datasets for various tasks, such as pure OCR, table content extraction, and document retrieval. **Data Collection Method:** Hybrid (Automated, Human, Synthetic)
**Labeling Method:** Hybrid (Automated, Human, Synthetic)
@@ -275,9 +275,9 @@ The NeMo Retriever OCR v1 model is evaluated on several NVIDIA internal datasets ### **Evaluation Results** -We benchmarked NeMo Retriever OCR v1 on internal evaluation datasets against PaddleOCR on various tasks, such as pure OCR (Character Error Rate), table content extraction (TEDS), and document retrieval (Recall@5). +We benchmarked Nemotron OCR v1 on internal evaluation datasets against PaddleOCR on various tasks, such as pure OCR (Character Error Rate), table content extraction (TEDS), and document retrieval (Recall@5). -| Metric | NeMo Retriever OCR v1 | PaddleOCR | Net change | +| Metric | Nemotron OCR v1 | PaddleOCR | Net change | |-------------------------------------------|--------------------|-----------|-----------------| | Character Error Rate | 0.1633 | 0.2029 | -19.5% ✔️ | | Bag-of-character Error Rate | 0.0453 | 0.0512 | -11.5% ✔️ | diff --git a/docker-compose.yaml b/docker-compose.yaml index 7f9934447feb9e9fe9eadb53ddd356b9a9cbb845..31199c61dab616bc7539f57f86301b9ea7c72b20 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,5 +1,5 @@ services: - nemo-retriever-ocr: + nemotron-ocr: build: context: . dockerfile: Dockerfile diff --git a/example.py b/example.py index 2a719c80e8623bc7827badb1d5cef508ec13c2e2..90e9bfd4eacd0ad618973e25fd9931eff84dd6ab 100644 --- a/example.py +++ b/example.py @@ -4,7 +4,7 @@ import argparse -from nemo_retriever_ocr.inference.pipeline import NemoRetrieverOCR +from nemotron_ocr.inference.pipeline import NemoRetrieverOCR def main(image_path, merge_level, no_visualize, model_dir): diff --git a/nemo-retriever-ocr/cpp/.gitattributes b/nemotron-ocr/cpp/.gitattributes similarity index 100% rename from nemo-retriever-ocr/cpp/.gitattributes rename to nemotron-ocr/cpp/.gitattributes diff --git a/nemo-retriever-ocr/cpp/.gitignore b/nemotron-ocr/cpp/.gitignore similarity index 100% rename from nemo-retriever-ocr/cpp/.gitignore rename to nemotron-ocr/cpp/.gitignore diff --git a/nemo-retriever-ocr/cpp/.gitmodules b/nemotron-ocr/cpp/.gitmodules similarity index 100% rename from nemo-retriever-ocr/cpp/.gitmodules rename to nemotron-ocr/cpp/.gitmodules diff --git a/nemo-retriever-ocr/cpp/README.md b/nemotron-ocr/cpp/README.md similarity index 100% rename from nemo-retriever-ocr/cpp/README.md rename to nemotron-ocr/cpp/README.md diff --git a/nemo-retriever-ocr/cpp/beam_decode/beam_decode.cpp b/nemotron-ocr/cpp/beam_decode/beam_decode.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/beam_decode/beam_decode.cpp rename to nemotron-ocr/cpp/beam_decode/beam_decode.cpp diff --git a/nemo-retriever-ocr/cpp/beam_decode/beam_decode.h b/nemotron-ocr/cpp/beam_decode/beam_decode.h similarity index 100% rename from nemo-retriever-ocr/cpp/beam_decode/beam_decode.h rename to nemotron-ocr/cpp/beam_decode/beam_decode.h diff --git a/nemo-retriever-ocr/cpp/beam_decode/kn_lm.cpp b/nemotron-ocr/cpp/beam_decode/kn_lm.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/beam_decode/kn_lm.cpp rename to nemotron-ocr/cpp/beam_decode/kn_lm.cpp diff --git a/nemo-retriever-ocr/cpp/beam_decode/kn_lm.h b/nemotron-ocr/cpp/beam_decode/kn_lm.h similarity index 100% rename from nemo-retriever-ocr/cpp/beam_decode/kn_lm.h rename to nemotron-ocr/cpp/beam_decode/kn_lm.h diff --git a/nemo-retriever-ocr/cpp/beam_decode/language_model.cpp b/nemotron-ocr/cpp/beam_decode/language_model.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/beam_decode/language_model.cpp rename to nemotron-ocr/cpp/beam_decode/language_model.cpp diff --git a/nemo-retriever-ocr/cpp/beam_decode/language_model.h b/nemotron-ocr/cpp/beam_decode/language_model.h similarity index 100% rename from nemo-retriever-ocr/cpp/beam_decode/language_model.h rename to nemotron-ocr/cpp/beam_decode/language_model.h diff --git a/nemo-retriever-ocr/cpp/beam_decode/log_sum_exp.cpp b/nemotron-ocr/cpp/beam_decode/log_sum_exp.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/beam_decode/log_sum_exp.cpp rename to nemotron-ocr/cpp/beam_decode/log_sum_exp.cpp diff --git a/nemo-retriever-ocr/cpp/beam_decode/log_sum_exp.h b/nemotron-ocr/cpp/beam_decode/log_sum_exp.h similarity index 100% rename from nemo-retriever-ocr/cpp/beam_decode/log_sum_exp.h rename to nemotron-ocr/cpp/beam_decode/log_sum_exp.h diff --git a/nemo-retriever-ocr/cpp/beam_decode/ngram_lm_base.cpp b/nemotron-ocr/cpp/beam_decode/ngram_lm_base.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/beam_decode/ngram_lm_base.cpp rename to nemotron-ocr/cpp/beam_decode/ngram_lm_base.cpp diff --git a/nemo-retriever-ocr/cpp/beam_decode/ngram_lm_base.h b/nemotron-ocr/cpp/beam_decode/ngram_lm_base.h similarity index 100% rename from nemo-retriever-ocr/cpp/beam_decode/ngram_lm_base.h rename to nemotron-ocr/cpp/beam_decode/ngram_lm_base.h diff --git a/nemo-retriever-ocr/cpp/beam_decode/prefix.cpp b/nemotron-ocr/cpp/beam_decode/prefix.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/beam_decode/prefix.cpp rename to nemotron-ocr/cpp/beam_decode/prefix.cpp diff --git a/nemo-retriever-ocr/cpp/beam_decode/prefix.h b/nemotron-ocr/cpp/beam_decode/prefix.h similarity index 100% rename from nemo-retriever-ocr/cpp/beam_decode/prefix.h rename to nemotron-ocr/cpp/beam_decode/prefix.h diff --git a/nemo-retriever-ocr/cpp/beam_decode/sbo_lm.cpp b/nemotron-ocr/cpp/beam_decode/sbo_lm.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/beam_decode/sbo_lm.cpp rename to nemotron-ocr/cpp/beam_decode/sbo_lm.cpp diff --git a/nemo-retriever-ocr/cpp/beam_decode/sbo_lm.h b/nemotron-ocr/cpp/beam_decode/sbo_lm.h similarity index 100% rename from nemo-retriever-ocr/cpp/beam_decode/sbo_lm.h rename to nemotron-ocr/cpp/beam_decode/sbo_lm.h diff --git a/nemo-retriever-ocr/cpp/better_grid_sample/cpu_indirect_grid_sample.cpp b/nemotron-ocr/cpp/better_grid_sample/cpu_indirect_grid_sample.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/better_grid_sample/cpu_indirect_grid_sample.cpp rename to nemotron-ocr/cpp/better_grid_sample/cpu_indirect_grid_sample.cpp diff --git a/nemo-retriever-ocr/cpp/better_grid_sample/gpu_grid_sample_utils.cuh b/nemotron-ocr/cpp/better_grid_sample/gpu_grid_sample_utils.cuh similarity index 100% rename from nemo-retriever-ocr/cpp/better_grid_sample/gpu_grid_sample_utils.cuh rename to nemotron-ocr/cpp/better_grid_sample/gpu_grid_sample_utils.cuh diff --git a/nemo-retriever-ocr/cpp/better_grid_sample/gpu_indirect_grid_sample.cu b/nemotron-ocr/cpp/better_grid_sample/gpu_indirect_grid_sample.cu similarity index 100% rename from nemo-retriever-ocr/cpp/better_grid_sample/gpu_indirect_grid_sample.cu rename to nemotron-ocr/cpp/better_grid_sample/gpu_indirect_grid_sample.cu diff --git a/nemo-retriever-ocr/cpp/better_grid_sample/grid_sample.h b/nemotron-ocr/cpp/better_grid_sample/grid_sample.h similarity index 100% rename from nemo-retriever-ocr/cpp/better_grid_sample/grid_sample.h rename to nemotron-ocr/cpp/better_grid_sample/grid_sample.h diff --git a/nemo-retriever-ocr/cpp/common.cpp b/nemotron-ocr/cpp/common.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/common.cpp rename to nemotron-ocr/cpp/common.cpp diff --git a/nemo-retriever-ocr/cpp/common.h b/nemotron-ocr/cpp/common.h similarity index 100% rename from nemo-retriever-ocr/cpp/common.h rename to nemotron-ocr/cpp/common.h diff --git a/nemo-retriever-ocr/cpp/cuda_intellisense.cuh b/nemotron-ocr/cpp/cuda_intellisense.cuh similarity index 100% rename from nemo-retriever-ocr/cpp/cuda_intellisense.cuh rename to nemotron-ocr/cpp/cuda_intellisense.cuh diff --git a/nemo-retriever-ocr/cpp/geometry.h b/nemotron-ocr/cpp/geometry.h similarity index 100% rename from nemo-retriever-ocr/cpp/geometry.h rename to nemotron-ocr/cpp/geometry.h diff --git a/nemo-retriever-ocr/cpp/geometry_api/calc_poly_min_rrect.cpp b/nemotron-ocr/cpp/geometry_api/calc_poly_min_rrect.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/geometry_api/calc_poly_min_rrect.cpp rename to nemotron-ocr/cpp/geometry_api/calc_poly_min_rrect.cpp diff --git a/nemo-retriever-ocr/cpp/geometry_api/geometry_api.cpp b/nemotron-ocr/cpp/geometry_api/geometry_api.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/geometry_api/geometry_api.cpp rename to nemotron-ocr/cpp/geometry_api/geometry_api.cpp diff --git a/nemo-retriever-ocr/cpp/geometry_api/geometry_api.h b/nemotron-ocr/cpp/geometry_api/geometry_api.h similarity index 100% rename from nemo-retriever-ocr/cpp/geometry_api/geometry_api.h rename to nemotron-ocr/cpp/geometry_api/geometry_api.h diff --git a/nemo-retriever-ocr/cpp/geometry_api/geometry_api_common.h b/nemotron-ocr/cpp/geometry_api/geometry_api_common.h similarity index 100% rename from nemo-retriever-ocr/cpp/geometry_api/geometry_api_common.h rename to nemotron-ocr/cpp/geometry_api/geometry_api_common.h diff --git a/nemo-retriever-ocr/cpp/geometry_api/geometry_api_gpu.cu b/nemotron-ocr/cpp/geometry_api/geometry_api_gpu.cu similarity index 100% rename from nemo-retriever-ocr/cpp/geometry_api/geometry_api_gpu.cu rename to nemotron-ocr/cpp/geometry_api/geometry_api_gpu.cu diff --git a/nemo-retriever-ocr/cpp/geometry_api/get_rel_continuation_cos.cpp b/nemotron-ocr/cpp/geometry_api/get_rel_continuation_cos.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/geometry_api/get_rel_continuation_cos.cpp rename to nemotron-ocr/cpp/geometry_api/get_rel_continuation_cos.cpp diff --git a/nemo-retriever-ocr/cpp/geometry_api/matrix2x2.h b/nemotron-ocr/cpp/geometry_api/matrix2x2.h similarity index 100% rename from nemo-retriever-ocr/cpp/geometry_api/matrix2x2.h rename to nemotron-ocr/cpp/geometry_api/matrix2x2.h diff --git a/nemo-retriever-ocr/cpp/geometry_api/poly_bounds_quad.cpp b/nemotron-ocr/cpp/geometry_api/poly_bounds_quad.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/geometry_api/poly_bounds_quad.cpp rename to nemotron-ocr/cpp/geometry_api/poly_bounds_quad.cpp diff --git a/nemo-retriever-ocr/cpp/graph_detection/encode_util.cpp b/nemotron-ocr/cpp/graph_detection/encode_util.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/graph_detection/encode_util.cpp rename to nemotron-ocr/cpp/graph_detection/encode_util.cpp diff --git a/nemo-retriever-ocr/cpp/graph_detection/encode_util.h b/nemotron-ocr/cpp/graph_detection/encode_util.h similarity index 100% rename from nemo-retriever-ocr/cpp/graph_detection/encode_util.h rename to nemotron-ocr/cpp/graph_detection/encode_util.h diff --git a/nemo-retriever-ocr/cpp/half_ops.cu b/nemotron-ocr/cpp/half_ops.cu similarity index 100% rename from nemo-retriever-ocr/cpp/half_ops.cu rename to nemotron-ocr/cpp/half_ops.cu diff --git a/nemo-retriever-ocr/cpp/half_ops.cuh b/nemotron-ocr/cpp/half_ops.cuh similarity index 100% rename from nemo-retriever-ocr/cpp/half_ops.cuh rename to nemotron-ocr/cpp/half_ops.cuh diff --git a/nemo-retriever-ocr/cpp/local_ips/local_ips.h b/nemotron-ocr/cpp/local_ips/local_ips.h similarity index 100% rename from nemo-retriever-ocr/cpp/local_ips/local_ips.h rename to nemotron-ocr/cpp/local_ips/local_ips.h diff --git a/nemo-retriever-ocr/cpp/local_ips/quad_all_2_all_dist_v2.cu b/nemotron-ocr/cpp/local_ips/quad_all_2_all_dist_v2.cu similarity index 100% rename from nemo-retriever-ocr/cpp/local_ips/quad_all_2_all_dist_v2.cu rename to nemotron-ocr/cpp/local_ips/quad_all_2_all_dist_v2.cu diff --git a/nemo-retriever-ocr/cpp/module.cpp b/nemotron-ocr/cpp/module.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/module.cpp rename to nemotron-ocr/cpp/module.cpp diff --git a/nemo-retriever-ocr/cpp/non_maximal_suppression/cpu_non_maximal_suppression.cpp b/nemotron-ocr/cpp/non_maximal_suppression/cpu_non_maximal_suppression.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/non_maximal_suppression/cpu_non_maximal_suppression.cpp rename to nemotron-ocr/cpp/non_maximal_suppression/cpu_non_maximal_suppression.cpp diff --git a/nemo-retriever-ocr/cpp/non_maximal_suppression/cuda_non_maximal_suppression.cu b/nemotron-ocr/cpp/non_maximal_suppression/cuda_non_maximal_suppression.cu similarity index 100% rename from nemo-retriever-ocr/cpp/non_maximal_suppression/cuda_non_maximal_suppression.cu rename to nemotron-ocr/cpp/non_maximal_suppression/cuda_non_maximal_suppression.cu diff --git a/nemo-retriever-ocr/cpp/non_maximal_suppression/nms_common.h b/nemotron-ocr/cpp/non_maximal_suppression/nms_common.h similarity index 100% rename from nemo-retriever-ocr/cpp/non_maximal_suppression/nms_common.h rename to nemotron-ocr/cpp/non_maximal_suppression/nms_common.h diff --git a/nemo-retriever-ocr/cpp/non_maximal_suppression/nms_kd_tree.h b/nemotron-ocr/cpp/non_maximal_suppression/nms_kd_tree.h similarity index 100% rename from nemo-retriever-ocr/cpp/non_maximal_suppression/nms_kd_tree.h rename to nemotron-ocr/cpp/non_maximal_suppression/nms_kd_tree.h diff --git a/nemo-retriever-ocr/cpp/non_maximal_suppression/non_maximal_suppression.cpp b/nemotron-ocr/cpp/non_maximal_suppression/non_maximal_suppression.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/non_maximal_suppression/non_maximal_suppression.cpp rename to nemotron-ocr/cpp/non_maximal_suppression/non_maximal_suppression.cpp diff --git a/nemo-retriever-ocr/cpp/non_maximal_suppression/non_maximal_suppression.h b/nemotron-ocr/cpp/non_maximal_suppression/non_maximal_suppression.h similarity index 100% rename from nemo-retriever-ocr/cpp/non_maximal_suppression/non_maximal_suppression.h rename to nemotron-ocr/cpp/non_maximal_suppression/non_maximal_suppression.h diff --git a/nemo-retriever-ocr/cpp/non_maximal_suppression/strided_quad.h b/nemotron-ocr/cpp/non_maximal_suppression/strided_quad.h similarity index 100% rename from nemo-retriever-ocr/cpp/non_maximal_suppression/strided_quad.h rename to nemotron-ocr/cpp/non_maximal_suppression/strided_quad.h diff --git a/nemo-retriever-ocr/cpp/promote.h b/nemotron-ocr/cpp/promote.h similarity index 100% rename from nemo-retriever-ocr/cpp/promote.h rename to nemotron-ocr/cpp/promote.h diff --git a/nemo-retriever-ocr/cpp/quad_rectify/quad_rectify.h b/nemotron-ocr/cpp/quad_rectify/quad_rectify.h similarity index 100% rename from nemo-retriever-ocr/cpp/quad_rectify/quad_rectify.h rename to nemotron-ocr/cpp/quad_rectify/quad_rectify.h diff --git a/nemo-retriever-ocr/cpp/quad_rectify/quad_rectify_cpu.cpp b/nemotron-ocr/cpp/quad_rectify/quad_rectify_cpu.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/quad_rectify/quad_rectify_cpu.cpp rename to nemotron-ocr/cpp/quad_rectify/quad_rectify_cpu.cpp diff --git a/nemo-retriever-ocr/cpp/quad_rectify/quad_rectify_cpu.h b/nemotron-ocr/cpp/quad_rectify/quad_rectify_cpu.h similarity index 100% rename from nemo-retriever-ocr/cpp/quad_rectify/quad_rectify_cpu.h rename to nemotron-ocr/cpp/quad_rectify/quad_rectify_cpu.h diff --git a/nemo-retriever-ocr/cpp/quad_rectify/quad_rectify_gpu.cu b/nemotron-ocr/cpp/quad_rectify/quad_rectify_gpu.cu similarity index 100% rename from nemo-retriever-ocr/cpp/quad_rectify/quad_rectify_gpu.cu rename to nemotron-ocr/cpp/quad_rectify/quad_rectify_gpu.cu diff --git a/nemo-retriever-ocr/cpp/quad_rectify/quad_rectify_gpu.h b/nemotron-ocr/cpp/quad_rectify/quad_rectify_gpu.h similarity index 100% rename from nemo-retriever-ocr/cpp/quad_rectify/quad_rectify_gpu.h rename to nemotron-ocr/cpp/quad_rectify/quad_rectify_gpu.h diff --git a/nemo-retriever-ocr/cpp/quad_rectify/quad_rectify_shared.h b/nemotron-ocr/cpp/quad_rectify/quad_rectify_shared.h similarity index 100% rename from nemo-retriever-ocr/cpp/quad_rectify/quad_rectify_shared.h rename to nemotron-ocr/cpp/quad_rectify/quad_rectify_shared.h diff --git a/nemo-retriever-ocr/cpp/scope_timer.h b/nemotron-ocr/cpp/scope_timer.h similarity index 100% rename from nemo-retriever-ocr/cpp/scope_timer.h rename to nemotron-ocr/cpp/scope_timer.h diff --git a/nemo-retriever-ocr/cpp/sparse_select/sparse_select.cpp b/nemotron-ocr/cpp/sparse_select/sparse_select.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/sparse_select/sparse_select.cpp rename to nemotron-ocr/cpp/sparse_select/sparse_select.cpp diff --git a/nemo-retriever-ocr/cpp/sparse_select/sparse_select.h b/nemotron-ocr/cpp/sparse_select/sparse_select.h similarity index 100% rename from nemo-retriever-ocr/cpp/sparse_select/sparse_select.h rename to nemotron-ocr/cpp/sparse_select/sparse_select.h diff --git a/nemo-retriever-ocr/cpp/text_region_grouping/dense_relations_to_graph.cpp b/nemotron-ocr/cpp/text_region_grouping/dense_relations_to_graph.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/text_region_grouping/dense_relations_to_graph.cpp rename to nemotron-ocr/cpp/text_region_grouping/dense_relations_to_graph.cpp diff --git a/nemo-retriever-ocr/cpp/text_region_grouping/text_region_grouping.cpp b/nemotron-ocr/cpp/text_region_grouping/text_region_grouping.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/text_region_grouping/text_region_grouping.cpp rename to nemotron-ocr/cpp/text_region_grouping/text_region_grouping.cpp diff --git a/nemo-retriever-ocr/cpp/text_region_grouping/text_region_grouping.h b/nemotron-ocr/cpp/text_region_grouping/text_region_grouping.h similarity index 100% rename from nemo-retriever-ocr/cpp/text_region_grouping/text_region_grouping.h rename to nemotron-ocr/cpp/text_region_grouping/text_region_grouping.h diff --git a/nemo-retriever-ocr/cpp/third_party/clipper/clipper.cpp b/nemotron-ocr/cpp/third_party/clipper/clipper.cpp similarity index 100% rename from nemo-retriever-ocr/cpp/third_party/clipper/clipper.cpp rename to nemotron-ocr/cpp/third_party/clipper/clipper.cpp diff --git a/nemo-retriever-ocr/cpp/third_party/clipper/clipper.hpp b/nemotron-ocr/cpp/third_party/clipper/clipper.hpp similarity index 100% rename from nemo-retriever-ocr/cpp/third_party/clipper/clipper.hpp rename to nemotron-ocr/cpp/third_party/clipper/clipper.hpp diff --git a/nemo-retriever-ocr/cpp/trove/LICENSE b/nemotron-ocr/cpp/trove/LICENSE similarity index 100% rename from nemo-retriever-ocr/cpp/trove/LICENSE rename to nemotron-ocr/cpp/trove/LICENSE diff --git a/nemo-retriever-ocr/cpp/trove/README.md b/nemotron-ocr/cpp/trove/README.md similarity index 100% rename from nemo-retriever-ocr/cpp/trove/README.md rename to nemotron-ocr/cpp/trove/README.md diff --git a/nemo-retriever-ocr/cpp/trove/doc/contiguous.png b/nemotron-ocr/cpp/trove/doc/contiguous.png similarity index 100% rename from nemo-retriever-ocr/cpp/trove/doc/contiguous.png rename to nemotron-ocr/cpp/trove/doc/contiguous.png diff --git a/nemo-retriever-ocr/cpp/trove/doc/random.png b/nemotron-ocr/cpp/trove/doc/random.png similarity index 100% rename from nemo-retriever-ocr/cpp/trove/doc/random.png rename to nemotron-ocr/cpp/trove/doc/random.png diff --git a/nemo-retriever-ocr/cpp/trove/doc/transpose.png b/nemotron-ocr/cpp/trove/doc/transpose.png similarity index 100% rename from nemo-retriever-ocr/cpp/trove/doc/transpose.png rename to nemotron-ocr/cpp/trove/doc/transpose.png diff --git a/nemo-retriever-ocr/cpp/trove/tests/Makefile b/nemotron-ocr/cpp/trove/tests/Makefile similarity index 100% rename from nemo-retriever-ocr/cpp/trove/tests/Makefile rename to nemotron-ocr/cpp/trove/tests/Makefile diff --git a/nemo-retriever-ocr/cpp/trove/tests/benchmark.cu b/nemotron-ocr/cpp/trove/tests/benchmark.cu similarity index 100% rename from nemo-retriever-ocr/cpp/trove/tests/benchmark.cu rename to nemotron-ocr/cpp/trove/tests/benchmark.cu diff --git a/nemo-retriever-ocr/cpp/trove/tests/block.cu b/nemotron-ocr/cpp/trove/tests/block.cu similarity index 100% rename from nemo-retriever-ocr/cpp/trove/tests/block.cu rename to nemotron-ocr/cpp/trove/tests/block.cu diff --git a/nemo-retriever-ocr/cpp/trove/tests/timer.h b/nemotron-ocr/cpp/trove/tests/timer.h similarity index 100% rename from nemo-retriever-ocr/cpp/trove/tests/timer.h rename to nemotron-ocr/cpp/trove/tests/timer.h diff --git a/nemo-retriever-ocr/cpp/trove/trove/aos.h b/nemotron-ocr/cpp/trove/trove/aos.h similarity index 100% rename from nemo-retriever-ocr/cpp/trove/trove/aos.h rename to nemotron-ocr/cpp/trove/trove/aos.h diff --git a/nemo-retriever-ocr/cpp/trove/trove/array.h b/nemotron-ocr/cpp/trove/trove/array.h similarity index 100% rename from nemo-retriever-ocr/cpp/trove/trove/array.h rename to nemotron-ocr/cpp/trove/trove/array.h diff --git a/nemo-retriever-ocr/cpp/trove/trove/block.h b/nemotron-ocr/cpp/trove/trove/block.h similarity index 100% rename from nemo-retriever-ocr/cpp/trove/trove/block.h rename to nemotron-ocr/cpp/trove/trove/block.h diff --git a/nemo-retriever-ocr/cpp/trove/trove/detail/dismember.h b/nemotron-ocr/cpp/trove/trove/detail/dismember.h similarity index 100% rename from nemo-retriever-ocr/cpp/trove/trove/detail/dismember.h rename to nemotron-ocr/cpp/trove/trove/detail/dismember.h diff --git a/nemo-retriever-ocr/cpp/trove/trove/detail/fallback.h b/nemotron-ocr/cpp/trove/trove/detail/fallback.h similarity index 100% rename from nemo-retriever-ocr/cpp/trove/trove/detail/fallback.h rename to nemotron-ocr/cpp/trove/trove/detail/fallback.h diff --git a/nemo-retriever-ocr/cpp/trove/trove/memory.h b/nemotron-ocr/cpp/trove/trove/memory.h similarity index 100% rename from nemo-retriever-ocr/cpp/trove/trove/memory.h rename to nemotron-ocr/cpp/trove/trove/memory.h diff --git a/nemo-retriever-ocr/cpp/trove/trove/print_array.h b/nemotron-ocr/cpp/trove/trove/print_array.h similarity index 100% rename from nemo-retriever-ocr/cpp/trove/trove/print_array.h rename to nemotron-ocr/cpp/trove/trove/print_array.h diff --git a/nemo-retriever-ocr/cpp/trove/trove/ptr.h b/nemotron-ocr/cpp/trove/trove/ptr.h similarity index 100% rename from nemo-retriever-ocr/cpp/trove/trove/ptr.h rename to nemotron-ocr/cpp/trove/trove/ptr.h diff --git a/nemo-retriever-ocr/cpp/trove/trove/rotate.h b/nemotron-ocr/cpp/trove/trove/rotate.h similarity index 100% rename from nemo-retriever-ocr/cpp/trove/trove/rotate.h rename to nemotron-ocr/cpp/trove/trove/rotate.h diff --git a/nemo-retriever-ocr/cpp/trove/trove/shfl.h b/nemotron-ocr/cpp/trove/trove/shfl.h similarity index 100% rename from nemo-retriever-ocr/cpp/trove/trove/shfl.h rename to nemotron-ocr/cpp/trove/trove/shfl.h diff --git a/nemo-retriever-ocr/cpp/trove/trove/static_gcd.h b/nemotron-ocr/cpp/trove/trove/static_gcd.h similarity index 100% rename from nemo-retriever-ocr/cpp/trove/trove/static_gcd.h rename to nemotron-ocr/cpp/trove/trove/static_gcd.h diff --git a/nemo-retriever-ocr/cpp/trove/trove/static_mod_inverse.h b/nemotron-ocr/cpp/trove/trove/static_mod_inverse.h similarity index 100% rename from nemo-retriever-ocr/cpp/trove/trove/static_mod_inverse.h rename to nemotron-ocr/cpp/trove/trove/static_mod_inverse.h diff --git a/nemo-retriever-ocr/cpp/trove/trove/transpose.h b/nemotron-ocr/cpp/trove/trove/transpose.h similarity index 100% rename from nemo-retriever-ocr/cpp/trove/trove/transpose.h rename to nemotron-ocr/cpp/trove/trove/transpose.h diff --git a/nemo-retriever-ocr/cpp/trove/trove/utility.h b/nemotron-ocr/cpp/trove/trove/utility.h similarity index 100% rename from nemo-retriever-ocr/cpp/trove/trove/utility.h rename to nemotron-ocr/cpp/trove/trove/utility.h diff --git a/nemo-retriever-ocr/cpp/trove/trove/warp.h b/nemotron-ocr/cpp/trove/trove/warp.h similarity index 100% rename from nemo-retriever-ocr/cpp/trove/trove/warp.h rename to nemotron-ocr/cpp/trove/trove/warp.h diff --git a/nemo-retriever-ocr/hatch_build.py b/nemotron-ocr/hatch_build.py similarity index 91% rename from nemo-retriever-ocr/hatch_build.py rename to nemotron-ocr/hatch_build.py index 8e2151fa8dad55cc94b14d19cfc88735c50a7eb6..308aa9ae8c1067ac6f6e846e18a103e5a956b81b 100644 --- a/nemo-retriever-ocr/hatch_build.py +++ b/nemotron-ocr/hatch_build.py @@ -15,12 +15,12 @@ def _extension_up_to_date(project_root: Path) -> bool: """Return True if a built .so exists and is newer than all sources. Respects the following directories: - - src/nemo_retriever_ocr_cpp (Python shim and built .so location) + - src/nemotron_ocr_cpp (Python shim and built .so location) - cpp/ (C++/CUDA sources) - scripts/ (build script) """ - extension_dir = project_root / "src" / "nemo_retriever_ocr_cpp" - candidates = list(extension_dir.glob("_nemo_retriever_ocr_cpp*.so")) + extension_dir = project_root / "src" / "nemotron_ocr_cpp" + candidates = list(extension_dir.glob("_nemotron_ocr_cpp*.so")) if not candidates: return False diff --git a/nemo-retriever-ocr/pyproject.toml b/nemotron-ocr/pyproject.toml similarity index 82% rename from nemo-retriever-ocr/pyproject.toml rename to nemotron-ocr/pyproject.toml index 49e733131701324b30fc4651a48672fb17189c03..dcf96055926f5bb7d36c10a7a1de489c742bec8f 100644 --- a/nemo-retriever-ocr/pyproject.toml +++ b/nemotron-ocr/pyproject.toml @@ -1,8 +1,8 @@ [project] -name = "nemo-retriever-ocr" +name = "nemotron-ocr" version = "1.0.0" -description = "NeMo Retriever OCR" -authors = [{ name = "NVIDIA NeMo Retriever" }] +description = "Nemoton OCR" +authors = [{ name = "NVIDIA Nemotron" }] requires-python = ">=3.12,<3.13" dependencies = [ "pandas>=2.3.3", @@ -30,8 +30,8 @@ build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = [ - "src/nemo_retriever_ocr", - "src/nemo_retriever_ocr_cpp", + "src/nemotron_ocr", + "src/nemotron_ocr_cpp", ] [tool.hatch.build.targets.wheel.hooks.custom] diff --git a/nemo-retriever-ocr/scripts/build-extension.py b/nemotron-ocr/scripts/build-extension.py similarity index 94% rename from nemo-retriever-ocr/scripts/build-extension.py rename to nemotron-ocr/scripts/build-extension.py index 266d6e8bf8f5c19573533a7178d93bff4145f77f..19f241bd48e87a3bf80b663c2ecd6675d5c25d62 100644 --- a/nemo-retriever-ocr/scripts/build-extension.py +++ b/nemotron-ocr/scripts/build-extension.py @@ -104,14 +104,14 @@ def build() -> None: ext_modules = [ CUDAExtension( - "_nemo_retriever_ocr_cpp", + "_nemotron_ocr_cpp", files, extra_compile_args=compile_args, libraries=libs, ) ] - distribution = Distribution({"name": "nemo_retriever_ocr_cpp", "ext_modules": ext_modules}) + distribution = Distribution({"name": "nemotron_ocr_cpp", "ext_modules": ext_modules}) build_ext = BuildExtension.with_options(parallel=False) cmd = build_ext(distribution) @@ -121,7 +121,7 @@ def build() -> None: # Copy built extensions back to the project for output in cmd.get_outputs(): output = Path(output) - relative_extension = Path("src/nemo_retriever_ocr_cpp") / output.relative_to(cmd.build_lib) + relative_extension = Path("src/nemotron_ocr_cpp") / output.relative_to(cmd.build_lib) shutil.copyfile(output, relative_extension) mode = os.stat(relative_extension).st_mode diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/__init__.py b/nemotron-ocr/src/nemotron_ocr/inference/__init__.py similarity index 100% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/__init__.py rename to nemotron-ocr/src/nemotron_ocr/inference/__init__.py diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/encoders/__init__.py b/nemotron-ocr/src/nemotron_ocr/inference/encoders/__init__.py similarity index 100% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/encoders/__init__.py rename to nemotron-ocr/src/nemotron_ocr/inference/encoders/__init__.py diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/encoders/base.py b/nemotron-ocr/src/nemotron_ocr/inference/encoders/base.py similarity index 94% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/encoders/base.py rename to nemotron-ocr/src/nemotron_ocr/inference/encoders/base.py index a3d31175400574e01c489e387b2b23f0a9b99232..820f297110767d89dc7d06efc3f076dd9c6a290b 100644 --- a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/encoders/base.py +++ b/nemotron-ocr/src/nemotron_ocr/inference/encoders/base.py @@ -8,10 +8,10 @@ import logging import warnings import torch -from nemo_retriever_ocr.inference.post_processing.data.text_region import Batch, TextRegion -from nemo_retriever_ocr.inference.post_processing.data.worker_messages import TargetEncoderMessage +from nemotron_ocr.inference.post_processing.data.text_region import Batch, TextRegion +from nemotron_ocr.inference.post_processing.data.worker_messages import TargetEncoderMessage -from nemo_retriever_ocr.inference.models.utils import is_named_tuple +from nemotron_ocr.inference.models.utils import is_named_tuple _PREPARED_KEY = "_prepared_base" diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/encoders/recognizer_encoder.py b/nemotron-ocr/src/nemotron_ocr/inference/encoders/recognizer_encoder.py similarity index 97% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/encoders/recognizer_encoder.py rename to nemotron-ocr/src/nemotron_ocr/inference/encoders/recognizer_encoder.py index 7987e06e4589c9580b099fffc2b7834d7ec3784d..fd6c73248beec4418229ef201bdeb4a3a7002af1 100644 --- a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/encoders/recognizer_encoder.py +++ b/nemotron-ocr/src/nemotron_ocr/inference/encoders/recognizer_encoder.py @@ -16,19 +16,19 @@ from typing import Tuple, List, Optional, Callable, Dict import numpy as np import torch -import nemo_retriever_ocr.inference.post_processing.data.text_region as tr -from nemo_retriever_ocr.inference.post_processing.data.quadrangle import Quadrangle -from nemo_retriever_ocr.inference.post_processing.data.worker_messages import TargetEncoderMessage -from nemo_retriever_ocr.inference.encoders.base import TargetEncoderBase +import nemotron_ocr.inference.post_processing.data.text_region as tr +from nemotron_ocr.inference.post_processing.data.quadrangle import Quadrangle +from nemotron_ocr.inference.post_processing.data.worker_messages import TargetEncoderMessage +from nemotron_ocr.inference.encoders.base import TargetEncoderBase -from nemo_retriever_ocr_cpp import ( +from nemotron_ocr_cpp import ( beam_decode, sparse_select, create_sbo_lm, decode_sequences, create_token_mapping, ) -from nemo_retriever_ocr.inference.models.utils import ( +from nemotron_ocr.inference.models.utils import ( f_measure, tensor_all_reduce, tensor_all_gather, diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/encoders/relational_encoder.py b/nemotron-ocr/src/nemotron_ocr/inference/encoders/relational_encoder.py similarity index 97% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/encoders/relational_encoder.py rename to nemotron-ocr/src/nemotron_ocr/inference/encoders/relational_encoder.py index bfe364c170832f0164f6b905504a60edaf72e44c..4dffdc1efe15acfb2d60a2bb1886c6c79de89870 100644 --- a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/encoders/relational_encoder.py +++ b/nemotron-ocr/src/nemotron_ocr/inference/encoders/relational_encoder.py @@ -12,12 +12,12 @@ import math import torch -from nemo_retriever_ocr.inference.post_processing.data.quadrangle import Quadrangle -import nemo_retriever_ocr.inference.post_processing.data.text_region as tr -from nemo_retriever_ocr.inference.encoders.base import TargetEncoderBase -from nemo_retriever_ocr.inference.models.utils import cat +from nemotron_ocr.inference.post_processing.data.quadrangle import Quadrangle +import nemotron_ocr.inference.post_processing.data.text_region as tr +from nemotron_ocr.inference.encoders.base import TargetEncoderBase +from nemotron_ocr.inference.models.utils import cat -from nemo_retriever_ocr_cpp import dense_relations_to_graph as cpp_dense_relations_to_graph +from nemotron_ocr_cpp import dense_relations_to_graph as cpp_dense_relations_to_graph logger = logging.getLogger(__name__) logging.getLogger("shapely.geos").setLevel(logging.FATAL) diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/__init__.py b/nemotron-ocr/src/nemotron_ocr/inference/models/__init__.py similarity index 100% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/__init__.py rename to nemotron-ocr/src/nemotron_ocr/inference/models/__init__.py diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/blocks.py b/nemotron-ocr/src/nemotron_ocr/inference/models/blocks.py similarity index 100% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/blocks.py rename to nemotron-ocr/src/nemotron_ocr/inference/models/blocks.py diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/detector/__init__.py b/nemotron-ocr/src/nemotron_ocr/inference/models/detector/__init__.py similarity index 100% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/detector/__init__.py rename to nemotron-ocr/src/nemotron_ocr/inference/models/detector/__init__.py diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/detector/aspp.py b/nemotron-ocr/src/nemotron_ocr/inference/models/detector/aspp.py similarity index 100% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/detector/aspp.py rename to nemotron-ocr/src/nemotron_ocr/inference/models/detector/aspp.py diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/detector/fots_detector.py b/nemotron-ocr/src/nemotron_ocr/inference/models/detector/fots_detector.py similarity index 98% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/detector/fots_detector.py rename to nemotron-ocr/src/nemotron_ocr/inference/models/detector/fots_detector.py index 2d672fdeaa339d54bb1058c6380eb6e84db46086..1e59fe54e5230a5c8e089391733969a5d40956df 100644 --- a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/detector/fots_detector.py +++ b/nemotron-ocr/src/nemotron_ocr/inference/models/detector/fots_detector.py @@ -10,8 +10,8 @@ import torch.nn.functional as F import math -from nemo_retriever_ocr.inference.models.detector.aspp import ASPP -from nemo_retriever_ocr.inference.models.detector import regnet +from nemotron_ocr.inference.models.detector.aspp import ASPP +from nemotron_ocr.inference.models.detector import regnet logger = logging.getLogger(__name__) diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/detector/regnet.py b/nemotron-ocr/src/nemotron_ocr/inference/models/detector/regnet.py similarity index 100% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/detector/regnet.py rename to nemotron-ocr/src/nemotron_ocr/inference/models/detector/regnet.py diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/recognizer.py b/nemotron-ocr/src/nemotron_ocr/inference/models/recognizer.py similarity index 97% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/recognizer.py rename to nemotron-ocr/src/nemotron_ocr/inference/models/recognizer.py index b563a13594ddb92e5daa618f1d46024e2b3571e6..07c3069c7590a0c928e8fc0f1c165047eaa60337 100644 --- a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/recognizer.py +++ b/nemotron-ocr/src/nemotron_ocr/inference/models/recognizer.py @@ -7,7 +7,7 @@ from typing import Optional import torch import torch.nn as nn -from nemo_retriever_ocr.inference.models import blocks +from nemotron_ocr.inference.models import blocks logger = logging.getLogger(__name__) diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/relational.py b/nemotron-ocr/src/nemotron_ocr/inference/models/relational.py similarity index 98% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/relational.py rename to nemotron-ocr/src/nemotron_ocr/inference/models/relational.py index 8e50dd3a4903fa3c961b24eb230e9caff340c05d..e12774a4abf42e487f6f51cb6cd73edb1c5265d5 100644 --- a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/relational.py +++ b/nemotron-ocr/src/nemotron_ocr/inference/models/relational.py @@ -7,10 +7,10 @@ import math import torch import torch.nn as nn -from nemo_retriever_ocr.inference.models import blocks -from nemo_retriever_ocr.inference.models.utils import options +from nemotron_ocr.inference.models import blocks +from nemotron_ocr.inference.models.utils import options -from nemo_retriever_ocr_cpp import ( +from nemotron_ocr_cpp import ( quad_rectify_calc_quad_width, ragged_quad_all_2_all_distance_v2, ) diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/utils.py b/nemotron-ocr/src/nemotron_ocr/inference/models/utils.py similarity index 100% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/models/utils.py rename to nemotron-ocr/src/nemotron_ocr/inference/models/utils.py diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/pipeline.py b/nemotron-ocr/src/nemotron_ocr/inference/pipeline.py similarity index 93% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/pipeline.py rename to nemotron-ocr/src/nemotron_ocr/inference/pipeline.py index 2c772e195c5f8fe472b55a19d239e2d0ea051d94..c57a072d49350aa55a6905f698d0682042b5ed64 100644 --- a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/pipeline.py +++ b/nemotron-ocr/src/nemotron_ocr/inference/pipeline.py @@ -10,17 +10,17 @@ from pathlib import Path import numpy as np import torch import torch.nn.functional as F -from nemo_retriever_ocr.inference.encoders.recognizer_encoder import RecognitionTargetEncoder -from nemo_retriever_ocr.inference.encoders.relational_encoder import RelationalTargetEncoder -from nemo_retriever_ocr.inference.models.detector.fots_detector import FOTSDetector -from nemo_retriever_ocr.inference.models.recognizer import TransformerRecognizer -from nemo_retriever_ocr.inference.models.relational import GlobalRelationalModel -from nemo_retriever_ocr.inference.post_processing.indirect_grid_sample import IndirectGridSample -from nemo_retriever_ocr.inference.post_processing.data.text_region import TextBlock -from nemo_retriever_ocr.inference.post_processing.quad_rectify import QuadRectify -from nemo_retriever_ocr.inference.post_processing.research_ops import parse_relational_results, reorder_boxes -from nemo_retriever_ocr.inference.pre_processing import interpolate_and_pad, pad_to_square -from nemo_retriever_ocr_cpp import quad_non_maximal_suppression, region_counts_to_indices, rrect_to_quads +from nemotron_ocr.inference.encoders.recognizer_encoder import RecognitionTargetEncoder +from nemotron_ocr.inference.encoders.relational_encoder import RelationalTargetEncoder +from nemotron_ocr.inference.models.detector.fots_detector import FOTSDetector +from nemotron_ocr.inference.models.recognizer import TransformerRecognizer +from nemotron_ocr.inference.models.relational import GlobalRelationalModel +from nemotron_ocr.inference.post_processing.indirect_grid_sample import IndirectGridSample +from nemotron_ocr.inference.post_processing.data.text_region import TextBlock +from nemotron_ocr.inference.post_processing.quad_rectify import QuadRectify +from nemotron_ocr.inference.post_processing.research_ops import parse_relational_results, reorder_boxes +from nemotron_ocr.inference.pre_processing import interpolate_and_pad, pad_to_square +from nemotron_ocr_cpp import quad_non_maximal_suppression, region_counts_to_indices, rrect_to_quads from PIL import Image, ImageDraw, ImageFont from torch import amp from torchvision.io import read_image, decode_image diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/__init__.py b/nemotron-ocr/src/nemotron_ocr/inference/post_processing/__init__.py similarity index 100% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/__init__.py rename to nemotron-ocr/src/nemotron_ocr/inference/post_processing/__init__.py diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/data/data_container.py b/nemotron-ocr/src/nemotron_ocr/inference/post_processing/data/data_container.py similarity index 100% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/data/data_container.py rename to nemotron-ocr/src/nemotron_ocr/inference/post_processing/data/data_container.py diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/data/quadrangle.py b/nemotron-ocr/src/nemotron_ocr/inference/post_processing/data/quadrangle.py similarity index 98% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/data/quadrangle.py rename to nemotron-ocr/src/nemotron_ocr/inference/post_processing/data/quadrangle.py index eb7ff1f3e778754854a62e417e450971dd7d1fdc..51946e89641652b8da0cef64eedd7c6c0004d2fc 100644 --- a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/data/quadrangle.py +++ b/nemotron-ocr/src/nemotron_ocr/inference/post_processing/data/quadrangle.py @@ -10,7 +10,7 @@ from shapely.geometry import Polygon import numpy import torch -from nemo_retriever_ocr_cpp import calc_poly_min_rrect, get_poly_bounds_quad +from nemotron_ocr_cpp import calc_poly_min_rrect, get_poly_bounds_quad logger = logging.getLogger(__name__) diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/data/relation_graph.py b/nemotron-ocr/src/nemotron_ocr/inference/post_processing/data/relation_graph.py similarity index 98% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/data/relation_graph.py rename to nemotron-ocr/src/nemotron_ocr/inference/post_processing/data/relation_graph.py index d633ecb8b7bc5b74d82d3c1915e865e052ca6295..68f9d0d5082b745e493f8b61a81093b7677fb0b3 100644 --- a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/data/relation_graph.py +++ b/nemotron-ocr/src/nemotron_ocr/inference/post_processing/data/relation_graph.py @@ -11,7 +11,7 @@ if TYPE_CHECKING: import torch -from nemo_retriever_ocr_cpp import get_rel_continuation_cos as _get_rel_continuation_cos +from nemotron_ocr_cpp import get_rel_continuation_cos as _get_rel_continuation_cos NEW_LINE_THRESHOLD = math.cos(80 / 180 * math.pi) diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/data/text_region.py b/nemotron-ocr/src/nemotron_ocr/inference/post_processing/data/text_region.py similarity index 96% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/data/text_region.py rename to nemotron-ocr/src/nemotron_ocr/inference/post_processing/data/text_region.py index 8efb2a63fc838624971a40dde62bc3333cc40bae..2d92e77a6360e90fce3190c640003eeb2dbe9e46 100644 --- a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/data/text_region.py +++ b/nemotron-ocr/src/nemotron_ocr/inference/post_processing/data/text_region.py @@ -7,11 +7,11 @@ from typing import List, Iterator, Optional import torch -from nemo_retriever_ocr.inference.post_processing.data.data_container import DataContainer -from nemo_retriever_ocr.inference.post_processing.data.quadrangle import Quadrangle -from nemo_retriever_ocr.inference.post_processing.data.relation_graph import RelationGraph +from nemotron_ocr.inference.post_processing.data.data_container import DataContainer +from nemotron_ocr.inference.post_processing.data.quadrangle import Quadrangle +from nemotron_ocr.inference.post_processing.data.relation_graph import RelationGraph -from nemo_retriever_ocr_cpp import text_region_grouping +from nemotron_ocr_cpp import text_region_grouping HEUR_HORIZONTAL_TOLERANCE = 2.0 diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/data/worker_messages.py b/nemotron-ocr/src/nemotron_ocr/inference/post_processing/data/worker_messages.py similarity index 100% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/data/worker_messages.py rename to nemotron-ocr/src/nemotron_ocr/inference/post_processing/data/worker_messages.py diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/indirect_grid_sample.py b/nemotron-ocr/src/nemotron_ocr/inference/post_processing/indirect_grid_sample.py similarity index 97% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/indirect_grid_sample.py rename to nemotron-ocr/src/nemotron_ocr/inference/post_processing/indirect_grid_sample.py index 449df49a6756acde7e26a15a999e4ccf35137424..601e1cff9ab19e89133e16cbfe46ada800268464 100644 --- a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/indirect_grid_sample.py +++ b/nemotron-ocr/src/nemotron_ocr/inference/post_processing/indirect_grid_sample.py @@ -5,7 +5,7 @@ import logging import torch from torch.autograd import Function -from nemo_retriever_ocr_cpp import ( +from nemotron_ocr_cpp import ( indirect_grid_sample_forward, indirect_grad_sample_backward, ) diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/quad_rectify.py b/nemotron-ocr/src/nemotron_ocr/inference/post_processing/quad_rectify.py similarity index 98% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/quad_rectify.py rename to nemotron-ocr/src/nemotron_ocr/inference/post_processing/quad_rectify.py index 879ab3b21e7e6fe6fc2ab0fcf166df6bdd49cede..ecf4e65ae611798a7e505238f67c55816f4f783b 100644 --- a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/quad_rectify.py +++ b/nemotron-ocr/src/nemotron_ocr/inference/post_processing/quad_rectify.py @@ -3,7 +3,7 @@ import torch from torch.autograd import Function -from nemo_retriever_ocr_cpp import ( +from nemotron_ocr_cpp import ( quad_rectify_backward, quad_rectify_calc_quad_width, quad_rectify_forward, diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/research_ops.py b/nemotron-ocr/src/nemotron_ocr/inference/post_processing/research_ops.py similarity index 100% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/research_ops.py rename to nemotron-ocr/src/nemotron_ocr/inference/post_processing/research_ops.py diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/rrect_to_quads.py b/nemotron-ocr/src/nemotron_ocr/inference/post_processing/rrect_to_quads.py similarity index 91% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/rrect_to_quads.py rename to nemotron-ocr/src/nemotron_ocr/inference/post_processing/rrect_to_quads.py index bb398261c26dc570eead52205c394f6a7ccf734d..810952aa43075b5bbca37edaad76f61ce276390b 100644 --- a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/post_processing/rrect_to_quads.py +++ b/nemotron-ocr/src/nemotron_ocr/inference/post_processing/rrect_to_quads.py @@ -3,7 +3,7 @@ import torch from torch.autograd import Function -from nemo_retriever_ocr_cpp import rrect_to_quads, rrect_to_quads_backward +from nemotron_ocr_cpp import rrect_to_quads, rrect_to_quads_backward class RRectToQuadsFunction(Function): diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr/inference/pre_processing.py b/nemotron-ocr/src/nemotron_ocr/inference/pre_processing.py similarity index 100% rename from nemo-retriever-ocr/src/nemo_retriever_ocr/inference/pre_processing.py rename to nemotron-ocr/src/nemotron_ocr/inference/pre_processing.py diff --git a/nemo-retriever-ocr/src/nemo_retriever_ocr_cpp/__init__.py b/nemotron-ocr/src/nemotron_ocr_cpp/__init__.py similarity index 87% rename from nemo-retriever-ocr/src/nemo_retriever_ocr_cpp/__init__.py rename to nemotron-ocr/src/nemotron_ocr_cpp/__init__.py index 992b924c4a0b2ab3d35c75533d92a62929af53d6..0d86574ffeacc184062faf6123395ef0e1ee4186 100644 --- a/nemo-retriever-ocr/src/nemo_retriever_ocr_cpp/__init__.py +++ b/nemotron-ocr/src/nemotron_ocr_cpp/__init__.py @@ -9,4 +9,4 @@ try: except Exception: # torch may be cpu-only/cuda-only, still attempt import of extension pass -from ._nemo_retriever_ocr_cpp import * # noqa: F403 \ No newline at end of file +from ._nemotron_ocr_cpp import * # noqa: F403 \ No newline at end of file diff --git a/nemo-retriever-ocr/tests/test_nms.py b/nemotron-ocr/tests/test_nms.py similarity index 93% rename from nemo-retriever-ocr/tests/test_nms.py rename to nemotron-ocr/tests/test_nms.py index 4e8935031aa2195fb9fc7adb8b7bda5624fa76ba..b913719b64d339e3a3a3b3f8097e0d05ccde4c1b 100644 --- a/nemo-retriever-ocr/tests/test_nms.py +++ b/nemotron-ocr/tests/test_nms.py @@ -3,7 +3,7 @@ import torch -from nemo_retriever_ocr_cpp import quad_non_maximal_suppression +from nemotron_ocr_cpp import quad_non_maximal_suppression quads = [ [[0, 2], [2, 2], [2, 0], [0, 0]], diff --git a/nemo-retriever-ocr/tests/test_quad_rectify.py b/nemotron-ocr/tests/test_quad_rectify.py similarity index 98% rename from nemo-retriever-ocr/tests/test_quad_rectify.py rename to nemotron-ocr/tests/test_quad_rectify.py index 9839d5c5f6653e9fb7133ad3454b38585623b568..8c10b48c414fca53f9568aff0a28c07210935c4c 100644 --- a/nemo-retriever-ocr/tests/test_quad_rectify.py +++ b/nemotron-ocr/tests/test_quad_rectify.py @@ -9,7 +9,7 @@ from torch.autograd import gradcheck from torchvision.transforms import ToTensor, ToPILImage from PIL import Image -from nemo_retriever_ocr.inference.post_processing.quad_rectify import QuadRectify +from nemotron_ocr.inference.post_processing.quad_rectify import QuadRectify example = 3 isotropic = True diff --git a/nemo-retriever-ocr/tests/test_rrect_to_quads.py b/nemotron-ocr/tests/test_rrect_to_quads.py similarity index 88% rename from nemo-retriever-ocr/tests/test_rrect_to_quads.py rename to nemotron-ocr/tests/test_rrect_to_quads.py index 836ca782330183d0f97592f774f66d6159dcfa0a..cc495675a25dc7383eef15c273ce3664ba397ec1 100644 --- a/nemo-retriever-ocr/tests/test_rrect_to_quads.py +++ b/nemotron-ocr/tests/test_rrect_to_quads.py @@ -7,7 +7,7 @@ import torch from torch.autograd import gradcheck -from nemo_retriever_ocr.inference.post_processing.rrect_to_quads import RRectToQuads +from nemotron_ocr.inference.post_processing.rrect_to_quads import RRectToQuads def get_rrects(b, h, w): diff --git a/nemo-retriever-ocr/uv.lock b/nemotron-ocr/uv.lock similarity index 99% rename from nemo-retriever-ocr/uv.lock rename to nemotron-ocr/uv.lock index 6f497319f98b6d1ebfd9e221704e18404685a1af..1403f1a4ffe02f00676b4d4a6c053e6dae4f09ca 100644 --- a/nemo-retriever-ocr/uv.lock +++ b/nemotron-ocr/uv.lock @@ -221,7 +221,7 @@ wheels = [ ] [[package]] -name = "nemo-retriever-ocr" +name = "nemotron-ocr" version = "1.2.0.dev2" source = { editable = "." } dependencies = [ diff --git a/pixi.toml b/pixi.toml index f3da6f1b23cdc56dc085f1b136571a84c626b969..ac71a8eb7557830f3a0a5fbddf4a2038d4512e34 100644 --- a/pixi.toml +++ b/pixi.toml @@ -1,7 +1,7 @@ [workspace] authors = ["Charles Blackmon-Luca <20627856+charlesbluca@users.noreply.github.com>"] channels = ["conda-forge", "nvidia"] -name = "nemo-retriever-ocr" +name = "nemotron-ocr" platforms = ["linux-64"] version = "0.1.0" diff --git a/quickstart.md b/quickstart.md index 2628af5119b8674ed542eb6f6e37a16c8059aaa6..78e7b3c0b44a0e7b37c79d2a73520bc0ab73888a 100644 --- a/quickstart.md +++ b/quickstart.md @@ -14,25 +14,25 @@ Create pixi environment and enter activated shell: pixi s ``` -Create a virtualenv and install nemo-retriever-ocr into it via `uv`: +Create a virtualenv and install nemotron-ocr into it via `uv`: ```bash uv venv \ -&& uv pip install -e ./nemo-retriever-ocr -v +&& uv pip install -e ./nemotron-ocr -v ``` Assert that OCR inference libraries can now be imported successfully: ```bash -uv run python -c "import nemo_retriever_ocr; import nemo_retriever_ocr_cpp" +uv run python -c "import nemotron_ocr; import nemotron_ocr_cpp" ``` ## Usage -`nemo_retriever_ocr.inference.pipeline.NemoRetrieverOCR` is the main entry point for performing OCR inference; it can be used to iterate over predictions for a given input image: +`nemotron_ocr.inference.pipeline.NemoRetrieverOCR` is the main entry point for performing OCR inference; it can be used to iterate over predictions for a given input image: ```python -from nemo_retriever_ocr.inference.pipeline import NemoRetrieverOCR +from nemotron_ocr.inference.pipeline import NemoRetrieverOCR ocr = NemoRetrieverOCR()