onnxtr 0.7.1__tar.gz → 0.8.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. {onnxtr-0.7.1 → onnxtr-0.8.0}/PKG-INFO +31 -3
  2. {onnxtr-0.7.1 → onnxtr-0.8.0}/README.md +28 -2
  3. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/_utils.py +2 -2
  4. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/detection/core.py +1 -1
  5. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/engine.py +19 -5
  6. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/recognition/models/crnn.py +3 -3
  7. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/utils/vocabs.py +0 -2
  8. onnxtr-0.8.0/onnxtr/version.py +1 -0
  9. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr.egg-info/PKG-INFO +31 -3
  10. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr.egg-info/requires.txt +2 -0
  11. {onnxtr-0.7.1 → onnxtr-0.8.0}/pyproject.toml +2 -0
  12. {onnxtr-0.7.1 → onnxtr-0.8.0}/setup.py +1 -1
  13. onnxtr-0.7.1/onnxtr/version.py +0 -1
  14. {onnxtr-0.7.1 → onnxtr-0.8.0}/LICENSE +0 -0
  15. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/__init__.py +0 -0
  16. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/contrib/__init__.py +0 -0
  17. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/contrib/artefacts.py +0 -0
  18. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/contrib/base.py +0 -0
  19. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/file_utils.py +0 -0
  20. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/io/__init__.py +0 -0
  21. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/io/elements.py +0 -0
  22. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/io/html.py +0 -0
  23. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/io/image.py +0 -0
  24. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/io/pdf.py +0 -0
  25. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/io/reader.py +0 -0
  26. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/__init__.py +0 -0
  27. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/builder.py +0 -0
  28. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/classification/__init__.py +0 -0
  29. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/classification/models/__init__.py +0 -0
  30. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/classification/models/mobilenet.py +0 -0
  31. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/classification/predictor/__init__.py +0 -0
  32. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/classification/predictor/base.py +0 -0
  33. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/classification/zoo.py +0 -0
  34. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/detection/__init__.py +0 -0
  35. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/detection/_utils/__init__.py +0 -0
  36. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/detection/_utils/base.py +0 -0
  37. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/detection/models/__init__.py +0 -0
  38. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/detection/models/differentiable_binarization.py +0 -0
  39. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/detection/models/fast.py +0 -0
  40. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/detection/models/linknet.py +0 -0
  41. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/detection/postprocessor/__init__.py +0 -0
  42. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/detection/postprocessor/base.py +0 -0
  43. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/detection/predictor/__init__.py +0 -0
  44. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/detection/predictor/base.py +0 -0
  45. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/detection/zoo.py +0 -0
  46. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/factory/__init__.py +0 -0
  47. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/factory/hub.py +0 -0
  48. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/predictor/__init__.py +0 -0
  49. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/predictor/base.py +0 -0
  50. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/predictor/predictor.py +0 -0
  51. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/preprocessor/__init__.py +0 -0
  52. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/preprocessor/base.py +0 -0
  53. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/recognition/__init__.py +0 -0
  54. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/recognition/core.py +0 -0
  55. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/recognition/models/__init__.py +0 -0
  56. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/recognition/models/master.py +0 -0
  57. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/recognition/models/parseq.py +0 -0
  58. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/recognition/models/sar.py +0 -0
  59. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/recognition/models/viptr.py +0 -0
  60. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/recognition/models/vitstr.py +0 -0
  61. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/recognition/predictor/__init__.py +0 -0
  62. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/recognition/predictor/_utils.py +0 -0
  63. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/recognition/predictor/base.py +0 -0
  64. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/recognition/utils.py +0 -0
  65. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/recognition/zoo.py +0 -0
  66. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/models/zoo.py +0 -0
  67. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/py.typed +0 -0
  68. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/transforms/__init__.py +0 -0
  69. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/transforms/base.py +0 -0
  70. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/utils/__init__.py +0 -0
  71. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/utils/common_types.py +0 -0
  72. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/utils/data.py +0 -0
  73. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/utils/fonts.py +0 -0
  74. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/utils/geometry.py +0 -0
  75. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/utils/multithreading.py +0 -0
  76. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/utils/reconstitution.py +0 -0
  77. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/utils/repr.py +0 -0
  78. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr/utils/visualization.py +0 -0
  79. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr.egg-info/SOURCES.txt +0 -0
  80. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr.egg-info/dependency_links.txt +0 -0
  81. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr.egg-info/top_level.txt +0 -0
  82. {onnxtr-0.7.1 → onnxtr-0.8.0}/onnxtr.egg-info/zip-safe +0 -0
  83. {onnxtr-0.7.1 → onnxtr-0.8.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onnxtr
3
- Version: 0.7.1
3
+ Version: 0.8.0
4
4
  Summary: Onnx Text Recognition (OnnxTR): docTR Onnx-Wrapper for high-performance OCR on documents.
5
5
  Author-email: Felix Dittrich <felixdittrich92@gmail.com>
6
6
  Maintainer: Felix Dittrich
@@ -264,6 +264,7 @@ Requires-Dist: pytest>=5.3.2; extra == "testing"
264
264
  Requires-Dist: coverage[toml]>=4.5.4; extra == "testing"
265
265
  Requires-Dist: requests>=2.20.0; extra == "testing"
266
266
  Requires-Dist: pytest-memray>=1.7.0; extra == "testing"
267
+ Requires-Dist: psutil>=7.0.0; extra == "testing"
267
268
  Provides-Extra: quality
268
269
  Requires-Dist: ruff>=0.1.5; extra == "quality"
269
270
  Requires-Dist: mypy>=0.812; extra == "quality"
@@ -278,6 +279,7 @@ Requires-Dist: pytest>=5.3.2; extra == "dev"
278
279
  Requires-Dist: coverage[toml]>=4.5.4; extra == "dev"
279
280
  Requires-Dist: requests>=2.20.0; extra == "dev"
280
281
  Requires-Dist: pytest-memray>=1.7.0; extra == "dev"
282
+ Requires-Dist: psutil>=7.0.0; extra == "dev"
281
283
  Requires-Dist: ruff>=0.1.5; extra == "dev"
282
284
  Requires-Dist: mypy>=0.812; extra == "dev"
283
285
  Requires-Dist: pre-commit>=2.17.0; extra == "dev"
@@ -292,8 +294,8 @@ Dynamic: license-file
292
294
  [![codecov](https://codecov.io/gh/felixdittrich92/OnnxTR/graph/badge.svg?token=WVFRCQBOLI)](https://codecov.io/gh/felixdittrich92/OnnxTR)
293
295
  [![Codacy Badge](https://app.codacy.com/project/badge/Grade/4fff4d764bb14fb8b4f4afeb9587231b)](https://app.codacy.com/gh/felixdittrich92/OnnxTR/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
294
296
  [![CodeFactor](https://www.codefactor.io/repository/github/felixdittrich92/onnxtr/badge)](https://www.codefactor.io/repository/github/felixdittrich92/onnxtr)
295
- [![Socket Badge](https://socket.dev/api/badge/pypi/package/onnxtr/0.7.1?artifact_id=tar-gz)](https://socket.dev/pypi/package/onnxtr/overview/0.7.1/tar-gz)
296
- [![Pypi](https://img.shields.io/badge/pypi-v0.7.1-blue.svg)](https://pypi.org/project/OnnxTR/)
297
+ [![Socket Badge](https://socket.dev/api/badge/pypi/package/onnxtr/0.8.0?artifact_id=tar-gz)](https://socket.dev/pypi/package/onnxtr/overview/0.8.0/tar-gz)
298
+ [![Pypi](https://img.shields.io/badge/pypi-v0.8.0-blue.svg)](https://pypi.org/project/OnnxTR/)
297
299
  [![Docker Images](https://img.shields.io/badge/Docker-4287f5?style=flat&logo=docker&logoColor=white)](https://github.com/felixdittrich92/OnnxTR/pkgs/container/onnxtr)
298
300
  [![Hugging Face Spaces](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue)](https://huggingface.co/spaces/Felix92/OnnxTR-OCR)
299
301
  ![PyPI - Downloads](https://img.shields.io/pypi/dm/onnxtr)
@@ -480,6 +482,32 @@ predictor = ocr_predictor(
480
482
  )
481
483
  ```
482
484
 
485
+ You can also dynamically configure whether the memory arena should shrink:
486
+
487
+ ```python
488
+ from random import random
489
+ from onnxruntime import RunOptions, SessionOptions
490
+
491
+ from onnxtr.models import ocr_predictor, EngineConfig
492
+
493
+ def arena_shrinkage_handler(run_options: RunOptions) -> RunOptions:
494
+ """
495
+ Shrink the memory arena on 10% of inference runs.
496
+ """
497
+ if random() < 0.1:
498
+ run_options.add_run_config_entry("memory.enable_memory_arena_shrinkage", "cpu:0")
499
+ return run_options
500
+
501
+ engine_config = EngineConfig(run_options_provider=arena_shrinkage_handler)
502
+ engine_config.session_options.enable_mem_pattern = False
503
+
504
+ predictor = ocr_predictor(
505
+ det_engine_cfg=engine_config,
506
+ reco_engine_cfg=engine_config,
507
+ clf_engine_cfg=engine_config
508
+ )
509
+ ```
510
+
483
511
  </details>
484
512
 
485
513
  ## Loading custom exported models
@@ -7,8 +7,8 @@
7
7
  [![codecov](https://codecov.io/gh/felixdittrich92/OnnxTR/graph/badge.svg?token=WVFRCQBOLI)](https://codecov.io/gh/felixdittrich92/OnnxTR)
8
8
  [![Codacy Badge](https://app.codacy.com/project/badge/Grade/4fff4d764bb14fb8b4f4afeb9587231b)](https://app.codacy.com/gh/felixdittrich92/OnnxTR/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
9
9
  [![CodeFactor](https://www.codefactor.io/repository/github/felixdittrich92/onnxtr/badge)](https://www.codefactor.io/repository/github/felixdittrich92/onnxtr)
10
- [![Socket Badge](https://socket.dev/api/badge/pypi/package/onnxtr/0.7.1?artifact_id=tar-gz)](https://socket.dev/pypi/package/onnxtr/overview/0.7.1/tar-gz)
11
- [![Pypi](https://img.shields.io/badge/pypi-v0.7.1-blue.svg)](https://pypi.org/project/OnnxTR/)
10
+ [![Socket Badge](https://socket.dev/api/badge/pypi/package/onnxtr/0.8.0?artifact_id=tar-gz)](https://socket.dev/pypi/package/onnxtr/overview/0.8.0/tar-gz)
11
+ [![Pypi](https://img.shields.io/badge/pypi-v0.8.0-blue.svg)](https://pypi.org/project/OnnxTR/)
12
12
  [![Docker Images](https://img.shields.io/badge/Docker-4287f5?style=flat&logo=docker&logoColor=white)](https://github.com/felixdittrich92/OnnxTR/pkgs/container/onnxtr)
13
13
  [![Hugging Face Spaces](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue)](https://huggingface.co/spaces/Felix92/OnnxTR-OCR)
14
14
  ![PyPI - Downloads](https://img.shields.io/pypi/dm/onnxtr)
@@ -195,6 +195,32 @@ predictor = ocr_predictor(
195
195
  )
196
196
  ```
197
197
 
198
+ You can also dynamically configure whether the memory arena should shrink:
199
+
200
+ ```python
201
+ from random import random
202
+ from onnxruntime import RunOptions, SessionOptions
203
+
204
+ from onnxtr.models import ocr_predictor, EngineConfig
205
+
206
+ def arena_shrinkage_handler(run_options: RunOptions) -> RunOptions:
207
+ """
208
+ Shrink the memory arena on 10% of inference runs.
209
+ """
210
+ if random() < 0.1:
211
+ run_options.add_run_config_entry("memory.enable_memory_arena_shrinkage", "cpu:0")
212
+ return run_options
213
+
214
+ engine_config = EngineConfig(run_options_provider=arena_shrinkage_handler)
215
+ engine_config.session_options.enable_mem_pattern = False
216
+
217
+ predictor = ocr_predictor(
218
+ det_engine_cfg=engine_config,
219
+ reco_engine_cfg=engine_config,
220
+ clf_engine_cfg=engine_config
221
+ )
222
+ ```
223
+
198
224
  </details>
199
225
 
200
226
  ## Loading custom exported models
@@ -62,7 +62,7 @@ def estimate_orientation(
62
62
  thresh = img.astype(np.uint8)
63
63
 
64
64
  page_orientation, orientation_confidence = general_page_orientation or (None, 0.0)
65
- if page_orientation and orientation_confidence >= min_confidence:
65
+ if page_orientation is not None and orientation_confidence >= min_confidence:
66
66
  # We rotate the image to the general orientation which improves the detection
67
67
  # No expand needed bitmap is already padded
68
68
  thresh = rotate_image(thresh, -page_orientation)
@@ -99,7 +99,7 @@ def estimate_orientation(
99
99
  estimated_angle = -round(median) if abs(median) != 0 else 0
100
100
 
101
101
  # combine with the general orientation and the estimated angle
102
- if page_orientation and orientation_confidence >= min_confidence:
102
+ if page_orientation is not None and orientation_confidence >= min_confidence:
103
103
  # special case where the estimated angle is mostly wrong:
104
104
  # case 1: - and + swapped
105
105
  # case 2: estimated angle is completely wrong
@@ -53,7 +53,7 @@ class DetectionPostProcessor(NestedObject):
53
53
 
54
54
  else:
55
55
  mask: np.ndarray = np.zeros((h, w), np.int32)
56
- cv2.fillPoly(mask, [points.astype(np.int32)], 1.0) # type: ignore[call-overload]
56
+ cv2.fillPoly(mask, [points.astype(np.int32)], 1.0)
57
57
  product = pred * mask
58
58
  return np.sum(product) / np.count_nonzero(product)
59
59
 
@@ -5,13 +5,15 @@
5
5
 
6
6
  import logging
7
7
  import os
8
- from typing import Any
8
+ from collections.abc import Callable
9
+ from typing import Any, TypeAlias
9
10
 
10
11
  import numpy as np
11
12
  from onnxruntime import (
12
13
  ExecutionMode,
13
14
  GraphOptimizationLevel,
14
15
  InferenceSession,
16
+ RunOptions,
15
17
  SessionOptions,
16
18
  get_available_providers,
17
19
  get_device,
@@ -23,7 +25,9 @@ set_default_logger_severity(int(os.getenv("ORT_LOG_SEVERITY_LEVEL", 4)))
23
25
  from onnxtr.utils.data import download_from_url
24
26
  from onnxtr.utils.geometry import shape_translate
25
27
 
26
- __all__ = ["EngineConfig"]
28
+ __all__ = ["EngineConfig", "RunOptionsProvider"]
29
+
30
+ RunOptionsProvider: TypeAlias = Callable[[RunOptions], RunOptions]
27
31
 
28
32
 
29
33
  class EngineConfig:
@@ -38,9 +42,11 @@ class EngineConfig:
38
42
  self,
39
43
  providers: list[tuple[str, dict[str, Any]]] | list[str] | None = None,
40
44
  session_options: SessionOptions | None = None,
45
+ run_options_provider: RunOptionsProvider | None = None,
41
46
  ):
42
47
  self._providers = providers or self._init_providers()
43
48
  self._session_options = session_options or self._init_sess_opts()
49
+ self.run_options_provider = run_options_provider
44
50
 
45
51
  def _init_providers(self) -> list[tuple[str, dict[str, Any]]]:
46
52
  providers: Any = [("CPUExecutionProvider", {"arena_extend_strategy": "kSameAsRequested"})]
@@ -79,7 +85,7 @@ class EngineConfig:
79
85
  return self._session_options
80
86
 
81
87
  def __repr__(self) -> str:
82
- return f"EngineConfig(providers={self.providers}"
88
+ return f"EngineConfig(providers={self.providers})"
83
89
 
84
90
 
85
91
  class Engine:
@@ -100,6 +106,7 @@ class Engine:
100
106
  self.model_path = archive_path
101
107
  self.session_options = engine_cfg.session_options
102
108
  self.providers = engine_cfg.providers
109
+ self.run_options_provider = engine_cfg.run_options_provider
103
110
  self.runtime = InferenceSession(archive_path, providers=self.providers, sess_options=self.session_options)
104
111
  self.runtime_inputs = self.runtime.get_inputs()[0]
105
112
  self.tf_exported = int(self.runtime_inputs.shape[-1]) == 3
@@ -109,6 +116,9 @@ class Engine:
109
116
  self.output_name = [output.name for output in self.runtime.get_outputs()]
110
117
 
111
118
  def run(self, inputs: np.ndarray) -> np.ndarray:
119
+ run_options = RunOptions()
120
+ if self.run_options_provider is not None:
121
+ run_options = self.run_options_provider(run_options)
112
122
  if self.tf_exported:
113
123
  inputs = shape_translate(inputs, format="BHWC") # sanity check
114
124
  else:
@@ -117,8 +127,12 @@ class Engine:
117
127
  inputs = np.broadcast_to(inputs, (self.fixed_batch_size, *inputs.shape))
118
128
  # combine the results
119
129
  logits = np.concatenate(
120
- [self.runtime.run(self.output_name, {self.runtime_inputs.name: batch})[0] for batch in inputs], axis=0
130
+ [
131
+ self.runtime.run(self.output_name, {self.runtime_inputs.name: batch}, run_options=run_options)[0]
132
+ for batch in inputs
133
+ ],
134
+ axis=0,
121
135
  )
122
136
  else:
123
- logits = self.runtime.run(self.output_name, {self.runtime_inputs.name: inputs})[0]
137
+ logits = self.runtime.run(self.output_name, {self.runtime_inputs.name: inputs}, run_options=run_options)[0]
124
138
  return shape_translate(logits, format="BHWC")
@@ -22,9 +22,9 @@ default_cfgs: dict[str, dict[str, Any]] = {
22
22
  "mean": (0.694, 0.695, 0.693),
23
23
  "std": (0.299, 0.296, 0.301),
24
24
  "input_shape": (3, 32, 128),
25
- "vocab": VOCABS["legacy_french"],
26
- "url": "https://github.com/felixdittrich92/OnnxTR/releases/download/v0.0.1/crnn_vgg16_bn-662979cc.onnx",
27
- "url_8_bit": "https://github.com/felixdittrich92/OnnxTR/releases/download/v0.1.2/crnn_vgg16_bn_static_8_bit-bce050c7.onnx",
25
+ "vocab": VOCABS["french"],
26
+ "url": "https://github.com/felixdittrich92/OnnxTR/releases/download/v0.7.1/crnn_vgg16_bn-743599aa.onnx",
27
+ "url_8_bit": "https://github.com/felixdittrich92/OnnxTR/releases/download/v0.7.1/crnn_vgg16_bn_static_8_bit-df1b594d.onnx",
28
28
  },
29
29
  "crnn_mobilenet_v3_small": {
30
30
  "mean": (0.694, 0.695, 0.693),
@@ -264,8 +264,6 @@ VOCABS["estonian"] = VOCABS["english"] + "šžõäöüŠŽÕÄÖÜ"
264
264
  VOCABS["esperanto"] = re.sub(r"[QqWwXxYy]", "", VOCABS["english"]) + "ĉĝĥĵŝŭĈĜĤĴŜŬ" + "₷"
265
265
 
266
266
  VOCABS["french"] = VOCABS["english"] + "àâéèêëîïôùûüçÀÂÉÈÊËÎÏÔÙÛÜÇ"
267
- # NOTE: legacy french is outdated, but kept for compatibility
268
- VOCABS["legacy_french"] = VOCABS["latin"] + "°" + "àâéèêëîïôùûçÀÂÉÈËÎÏÔÙÛÇ" + _BASE_VOCABS["currency"]
269
267
 
270
268
  VOCABS["finnish"] = VOCABS["english"] + "äöÄÖ"
271
269
 
@@ -0,0 +1 @@
1
+ __version__ = 'v0.8.0'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onnxtr
3
- Version: 0.7.1
3
+ Version: 0.8.0
4
4
  Summary: Onnx Text Recognition (OnnxTR): docTR Onnx-Wrapper for high-performance OCR on documents.
5
5
  Author-email: Felix Dittrich <felixdittrich92@gmail.com>
6
6
  Maintainer: Felix Dittrich
@@ -264,6 +264,7 @@ Requires-Dist: pytest>=5.3.2; extra == "testing"
264
264
  Requires-Dist: coverage[toml]>=4.5.4; extra == "testing"
265
265
  Requires-Dist: requests>=2.20.0; extra == "testing"
266
266
  Requires-Dist: pytest-memray>=1.7.0; extra == "testing"
267
+ Requires-Dist: psutil>=7.0.0; extra == "testing"
267
268
  Provides-Extra: quality
268
269
  Requires-Dist: ruff>=0.1.5; extra == "quality"
269
270
  Requires-Dist: mypy>=0.812; extra == "quality"
@@ -278,6 +279,7 @@ Requires-Dist: pytest>=5.3.2; extra == "dev"
278
279
  Requires-Dist: coverage[toml]>=4.5.4; extra == "dev"
279
280
  Requires-Dist: requests>=2.20.0; extra == "dev"
280
281
  Requires-Dist: pytest-memray>=1.7.0; extra == "dev"
282
+ Requires-Dist: psutil>=7.0.0; extra == "dev"
281
283
  Requires-Dist: ruff>=0.1.5; extra == "dev"
282
284
  Requires-Dist: mypy>=0.812; extra == "dev"
283
285
  Requires-Dist: pre-commit>=2.17.0; extra == "dev"
@@ -292,8 +294,8 @@ Dynamic: license-file
292
294
  [![codecov](https://codecov.io/gh/felixdittrich92/OnnxTR/graph/badge.svg?token=WVFRCQBOLI)](https://codecov.io/gh/felixdittrich92/OnnxTR)
293
295
  [![Codacy Badge](https://app.codacy.com/project/badge/Grade/4fff4d764bb14fb8b4f4afeb9587231b)](https://app.codacy.com/gh/felixdittrich92/OnnxTR/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
294
296
  [![CodeFactor](https://www.codefactor.io/repository/github/felixdittrich92/onnxtr/badge)](https://www.codefactor.io/repository/github/felixdittrich92/onnxtr)
295
- [![Socket Badge](https://socket.dev/api/badge/pypi/package/onnxtr/0.7.1?artifact_id=tar-gz)](https://socket.dev/pypi/package/onnxtr/overview/0.7.1/tar-gz)
296
- [![Pypi](https://img.shields.io/badge/pypi-v0.7.1-blue.svg)](https://pypi.org/project/OnnxTR/)
297
+ [![Socket Badge](https://socket.dev/api/badge/pypi/package/onnxtr/0.8.0?artifact_id=tar-gz)](https://socket.dev/pypi/package/onnxtr/overview/0.8.0/tar-gz)
298
+ [![Pypi](https://img.shields.io/badge/pypi-v0.8.0-blue.svg)](https://pypi.org/project/OnnxTR/)
297
299
  [![Docker Images](https://img.shields.io/badge/Docker-4287f5?style=flat&logo=docker&logoColor=white)](https://github.com/felixdittrich92/OnnxTR/pkgs/container/onnxtr)
298
300
  [![Hugging Face Spaces](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue)](https://huggingface.co/spaces/Felix92/OnnxTR-OCR)
299
301
  ![PyPI - Downloads](https://img.shields.io/pypi/dm/onnxtr)
@@ -480,6 +482,32 @@ predictor = ocr_predictor(
480
482
  )
481
483
  ```
482
484
 
485
+ You can also dynamically configure whether the memory arena should shrink:
486
+
487
+ ```python
488
+ from random import random
489
+ from onnxruntime import RunOptions, SessionOptions
490
+
491
+ from onnxtr.models import ocr_predictor, EngineConfig
492
+
493
+ def arena_shrinkage_handler(run_options: RunOptions) -> RunOptions:
494
+ """
495
+ Shrink the memory arena on 10% of inference runs.
496
+ """
497
+ if random() < 0.1:
498
+ run_options.add_run_config_entry("memory.enable_memory_arena_shrinkage", "cpu:0")
499
+ return run_options
500
+
501
+ engine_config = EngineConfig(run_options_provider=arena_shrinkage_handler)
502
+ engine_config.session_options.enable_mem_pattern = False
503
+
504
+ predictor = ocr_predictor(
505
+ det_engine_cfg=engine_config,
506
+ reco_engine_cfg=engine_config,
507
+ clf_engine_cfg=engine_config
508
+ )
509
+ ```
510
+
483
511
  </details>
484
512
 
485
513
  ## Loading custom exported models
@@ -28,6 +28,7 @@ pytest>=5.3.2
28
28
  coverage[toml]>=4.5.4
29
29
  requests>=2.20.0
30
30
  pytest-memray>=1.7.0
31
+ psutil>=7.0.0
31
32
  ruff>=0.1.5
32
33
  mypy>=0.812
33
34
  pre-commit>=2.17.0
@@ -61,6 +62,7 @@ pytest>=5.3.2
61
62
  coverage[toml]>=4.5.4
62
63
  requests>=2.20.0
63
64
  pytest-memray>=1.7.0
65
+ psutil>=7.0.0
64
66
 
65
67
  [viz]
66
68
  matplotlib>=3.1.0
@@ -81,6 +81,7 @@ testing = [
81
81
  "coverage[toml]>=4.5.4",
82
82
  "requests>=2.20.0",
83
83
  "pytest-memray>=1.7.0",
84
+ "psutil>=7.0.0",
84
85
  ]
85
86
  quality = [
86
87
  "ruff>=0.1.5",
@@ -101,6 +102,7 @@ dev = [
101
102
  "coverage[toml]>=4.5.4",
102
103
  "requests>=2.20.0",
103
104
  "pytest-memray>=1.7.0",
105
+ "psutil>=7.0.0",
104
106
  # Quality
105
107
  "ruff>=0.1.5",
106
108
  "mypy>=0.812",
@@ -9,7 +9,7 @@ from pathlib import Path
9
9
  from setuptools import setup
10
10
 
11
11
  PKG_NAME = "onnxtr"
12
- VERSION = os.getenv("BUILD_VERSION", "0.7.1a0")
12
+ VERSION = os.getenv("BUILD_VERSION", "0.8.0a0")
13
13
 
14
14
 
15
15
  if __name__ == "__main__":
@@ -1 +0,0 @@
1
- __version__ = 'v0.7.1'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes