react-native-executorch 0.4.10 → 0.5.0-nightly-6f4dd53-20251211

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 (881) hide show
  1. package/README.md +77 -71
  2. package/android/CMakeLists.txt +29 -0
  3. package/android/build.gradle +76 -13
  4. package/android/libs/classes.jar +0 -0
  5. package/android/src/main/cpp/CMakeLists.txt +109 -0
  6. package/android/src/main/cpp/ETInstallerModule.cpp +76 -0
  7. package/android/src/main/cpp/ETInstallerModule.h +43 -0
  8. package/android/src/main/java/com/swmansion/rnexecutorch/ETInstaller.kt +66 -0
  9. package/android/src/main/java/com/swmansion/rnexecutorch/RnExecutorchPackage.kt +6 -124
  10. package/common/ada/ada.cpp +17406 -0
  11. package/common/ada/ada.h +10274 -0
  12. package/common/pfft/pfft.c +2205 -0
  13. package/common/pfft/pfft.h +185 -0
  14. package/common/rnexecutorch/Log.h +489 -0
  15. package/common/rnexecutorch/RnExecutorchInstaller.cpp +113 -0
  16. package/common/rnexecutorch/RnExecutorchInstaller.h +87 -0
  17. package/common/rnexecutorch/TokenizerModule.cpp +52 -0
  18. package/common/rnexecutorch/TokenizerModule.h +29 -0
  19. package/common/rnexecutorch/data_processing/FFT.cpp +21 -0
  20. package/common/rnexecutorch/data_processing/FFT.h +23 -0
  21. package/common/rnexecutorch/data_processing/FileUtils.h +30 -0
  22. package/common/rnexecutorch/data_processing/ImageProcessing.cpp +240 -0
  23. package/common/rnexecutorch/data_processing/ImageProcessing.h +55 -0
  24. package/common/rnexecutorch/data_processing/Numerical.cpp +111 -0
  25. package/common/rnexecutorch/data_processing/Numerical.h +77 -0
  26. package/common/rnexecutorch/data_processing/base64.cpp +110 -0
  27. package/common/rnexecutorch/data_processing/base64.h +46 -0
  28. package/common/rnexecutorch/data_processing/dsp.cpp +19 -0
  29. package/common/rnexecutorch/data_processing/dsp.h +12 -0
  30. package/common/rnexecutorch/data_processing/gzip.cpp +47 -0
  31. package/common/rnexecutorch/data_processing/gzip.h +7 -0
  32. package/common/rnexecutorch/host_objects/JSTensorViewIn.h +12 -0
  33. package/common/rnexecutorch/host_objects/JSTensorViewOut.h +22 -0
  34. package/common/rnexecutorch/host_objects/JsiConversions.h +418 -0
  35. package/common/rnexecutorch/host_objects/ModelHostObject.h +313 -0
  36. package/common/rnexecutorch/jsi/JsiHostObject.cpp +108 -0
  37. package/common/rnexecutorch/jsi/JsiHostObject.h +87 -0
  38. package/common/rnexecutorch/jsi/OwningArrayBuffer.h +57 -0
  39. package/common/rnexecutorch/jsi/Promise.cpp +20 -0
  40. package/common/rnexecutorch/jsi/Promise.h +69 -0
  41. package/common/rnexecutorch/jsi/RuntimeAwareCache.h +58 -0
  42. package/common/rnexecutorch/jsi/RuntimeLifecycleMonitor.cpp +53 -0
  43. package/common/rnexecutorch/jsi/RuntimeLifecycleMonitor.h +35 -0
  44. package/common/rnexecutorch/metaprogramming/ConstructorHelpers.h +133 -0
  45. package/common/rnexecutorch/metaprogramming/FunctionHelpers.h +50 -0
  46. package/common/rnexecutorch/metaprogramming/TypeConcepts.h +37 -0
  47. package/common/rnexecutorch/models/BaseModel.cpp +183 -0
  48. package/common/rnexecutorch/models/BaseModel.h +61 -0
  49. package/common/rnexecutorch/models/classification/Classification.cpp +72 -0
  50. package/common/rnexecutorch/models/classification/Classification.h +31 -0
  51. package/{ios/RnExecutorch/models/classification/Constants.mm → common/rnexecutorch/models/classification/Constants.h} +7 -2
  52. package/common/rnexecutorch/models/embeddings/BaseEmbeddings.cpp +19 -0
  53. package/common/rnexecutorch/models/embeddings/BaseEmbeddings.h +17 -0
  54. package/common/rnexecutorch/models/embeddings/image/ImageEmbeddings.cpp +45 -0
  55. package/common/rnexecutorch/models/embeddings/image/ImageEmbeddings.h +28 -0
  56. package/common/rnexecutorch/models/embeddings/text/TextEmbeddings.cpp +60 -0
  57. package/common/rnexecutorch/models/embeddings/text/TextEmbeddings.h +31 -0
  58. package/{ios/RnExecutorch/models/image_segmentation/Constants.mm → common/rnexecutorch/models/image_segmentation/Constants.h} +7 -2
  59. package/common/rnexecutorch/models/image_segmentation/ImageSegmentation.cpp +168 -0
  60. package/common/rnexecutorch/models/image_segmentation/ImageSegmentation.h +50 -0
  61. package/common/rnexecutorch/models/llm/LLM.cpp +98 -0
  62. package/common/rnexecutorch/models/llm/LLM.h +38 -0
  63. package/{ios/RnExecutorch/utils/Constants.mm → common/rnexecutorch/models/object_detection/Constants.h} +9 -2
  64. package/common/rnexecutorch/models/object_detection/ObjectDetection.cpp +82 -0
  65. package/common/rnexecutorch/models/object_detection/ObjectDetection.h +37 -0
  66. package/common/rnexecutorch/models/object_detection/Types.h +13 -0
  67. package/{ios/RnExecutorch/utils/ObjectDetectionUtils.mm → common/rnexecutorch/models/object_detection/Utils.cpp} +17 -35
  68. package/common/rnexecutorch/models/object_detection/Utils.h +11 -0
  69. package/common/rnexecutorch/models/ocr/CTCLabelConverter.cpp +88 -0
  70. package/common/rnexecutorch/models/ocr/CTCLabelConverter.h +29 -0
  71. package/common/rnexecutorch/models/ocr/Constants.h +41 -0
  72. package/common/rnexecutorch/models/ocr/Detector.cpp +100 -0
  73. package/common/rnexecutorch/models/ocr/Detector.h +30 -0
  74. package/common/rnexecutorch/models/ocr/OCR.cpp +53 -0
  75. package/common/rnexecutorch/models/ocr/OCR.h +44 -0
  76. package/common/rnexecutorch/models/ocr/RecognitionHandler.cpp +108 -0
  77. package/common/rnexecutorch/models/ocr/RecognitionHandler.h +42 -0
  78. package/common/rnexecutorch/models/ocr/Recognizer.cpp +80 -0
  79. package/common/rnexecutorch/models/ocr/Recognizer.h +36 -0
  80. package/common/rnexecutorch/models/ocr/Types.h +35 -0
  81. package/common/rnexecutorch/models/ocr/utils/DetectorUtils.cpp +710 -0
  82. package/common/rnexecutorch/models/ocr/utils/DetectorUtils.h +81 -0
  83. package/common/rnexecutorch/models/ocr/utils/RecognitionHandlerUtils.cpp +159 -0
  84. package/common/rnexecutorch/models/ocr/utils/RecognitionHandlerUtils.h +72 -0
  85. package/common/rnexecutorch/models/ocr/utils/RecognizerUtils.cpp +204 -0
  86. package/common/rnexecutorch/models/ocr/utils/RecognizerUtils.h +71 -0
  87. package/common/rnexecutorch/models/speech_to_text/SpeechToText.cpp +125 -0
  88. package/common/rnexecutorch/models/speech_to_text/SpeechToText.h +57 -0
  89. package/common/rnexecutorch/models/speech_to_text/asr/ASR.cpp +303 -0
  90. package/common/rnexecutorch/models/speech_to_text/asr/ASR.h +61 -0
  91. package/common/rnexecutorch/models/speech_to_text/stream/HypothesisBuffer.cpp +82 -0
  92. package/common/rnexecutorch/models/speech_to_text/stream/HypothesisBuffer.h +25 -0
  93. package/common/rnexecutorch/models/speech_to_text/stream/OnlineASRProcessor.cpp +99 -0
  94. package/common/rnexecutorch/models/speech_to_text/stream/OnlineASRProcessor.h +33 -0
  95. package/common/rnexecutorch/models/speech_to_text/types/DecodingOptions.h +15 -0
  96. package/common/rnexecutorch/models/speech_to_text/types/GenerationResult.h +12 -0
  97. package/common/rnexecutorch/models/speech_to_text/types/ProcessResult.h +12 -0
  98. package/common/rnexecutorch/models/speech_to_text/types/Segment.h +14 -0
  99. package/common/rnexecutorch/models/speech_to_text/types/Word.h +13 -0
  100. package/common/rnexecutorch/models/style_transfer/StyleTransfer.cpp +55 -0
  101. package/common/rnexecutorch/models/style_transfer/StyleTransfer.h +35 -0
  102. package/common/rnexecutorch/models/text_to_image/Constants.h +9 -0
  103. package/common/rnexecutorch/models/text_to_image/Decoder.cpp +32 -0
  104. package/common/rnexecutorch/models/text_to_image/Decoder.h +24 -0
  105. package/common/rnexecutorch/models/text_to_image/Encoder.cpp +44 -0
  106. package/common/rnexecutorch/models/text_to_image/Encoder.h +32 -0
  107. package/common/rnexecutorch/models/text_to_image/Scheduler.cpp +152 -0
  108. package/common/rnexecutorch/models/text_to_image/Scheduler.h +41 -0
  109. package/common/rnexecutorch/models/text_to_image/TextToImage.cpp +141 -0
  110. package/common/rnexecutorch/models/text_to_image/TextToImage.h +64 -0
  111. package/common/rnexecutorch/models/text_to_image/UNet.cpp +38 -0
  112. package/common/rnexecutorch/models/text_to_image/UNet.h +28 -0
  113. package/common/rnexecutorch/models/vertical_ocr/VerticalDetector.cpp +93 -0
  114. package/common/rnexecutorch/models/vertical_ocr/VerticalDetector.h +49 -0
  115. package/common/rnexecutorch/models/vertical_ocr/VerticalOCR.cpp +180 -0
  116. package/common/rnexecutorch/models/vertical_ocr/VerticalOCR.h +85 -0
  117. package/common/rnexecutorch/models/voice_activity_detection/Constants.h +27 -0
  118. package/common/rnexecutorch/models/voice_activity_detection/Types.h +12 -0
  119. package/common/rnexecutorch/models/voice_activity_detection/Utils.cpp +15 -0
  120. package/common/rnexecutorch/models/voice_activity_detection/Utils.h +13 -0
  121. package/common/rnexecutorch/models/voice_activity_detection/VoiceActivityDetection.cpp +160 -0
  122. package/common/rnexecutorch/models/voice_activity_detection/VoiceActivityDetection.h +36 -0
  123. package/common/rnexecutorch/tests/CMakeLists.txt +30 -0
  124. package/common/rnexecutorch/tests/LogTest.cpp +530 -0
  125. package/common/rnexecutorch/tests/NumericalTest.cpp +110 -0
  126. package/common/rnexecutorch/tests/README.md +37 -0
  127. package/common/rnexecutorch/threads/GlobalThreadPool.h +84 -0
  128. package/common/rnexecutorch/threads/HighPerformanceThreadPool.h +364 -0
  129. package/common/rnexecutorch/threads/utils/ThreadUtils.h +29 -0
  130. package/common/runner/arange_util.cpp +44 -0
  131. package/common/runner/arange_util.h +37 -0
  132. package/common/runner/constants.h +28 -0
  133. package/common/runner/io_manager.h +240 -0
  134. package/common/runner/irunner.h +119 -0
  135. package/common/runner/kernel_includes.h +23 -0
  136. package/common/runner/runner.cpp +369 -0
  137. package/common/runner/runner.h +85 -0
  138. package/common/runner/sampler.cpp +201 -0
  139. package/common/runner/sampler.h +67 -0
  140. package/common/runner/stats.h +161 -0
  141. package/common/runner/text_decoder_runner.cpp +79 -0
  142. package/common/runner/text_decoder_runner.h +126 -0
  143. package/common/runner/text_prefiller.cpp +125 -0
  144. package/common/runner/text_prefiller.h +85 -0
  145. package/common/runner/text_token_generator.h +205 -0
  146. package/common/runner/util.h +153 -0
  147. package/ios/RnExecutorch/ETInstaller.h +8 -0
  148. package/ios/RnExecutorch/ETInstaller.mm +56 -0
  149. package/ios/RnExecutorch.xcodeproj/project.pbxproj +73 -23
  150. package/lib/module/Error.js +3 -0
  151. package/lib/module/Error.js.map +1 -1
  152. package/lib/module/common/Logger.js +23 -0
  153. package/lib/module/common/Logger.js.map +1 -0
  154. package/lib/module/constants/directories.js +1 -1
  155. package/lib/module/constants/directories.js.map +1 -1
  156. package/lib/module/constants/llmDefaults.js +8 -0
  157. package/lib/module/constants/llmDefaults.js.map +1 -1
  158. package/lib/module/constants/modelUrls.js +356 -84
  159. package/lib/module/constants/modelUrls.js.map +1 -1
  160. package/lib/module/constants/ocr/models.js +181 -286
  161. package/lib/module/constants/ocr/models.js.map +1 -1
  162. package/lib/module/constants/ocr/symbols.js +66 -65
  163. package/lib/module/constants/ocr/symbols.js.map +1 -1
  164. package/lib/module/controllers/LLMController.js +53 -23
  165. package/lib/module/controllers/LLMController.js.map +1 -1
  166. package/lib/module/controllers/OCRController.js +17 -10
  167. package/lib/module/controllers/OCRController.js.map +1 -1
  168. package/lib/module/controllers/VerticalOCRController.js +17 -10
  169. package/lib/module/controllers/VerticalOCRController.js.map +1 -1
  170. package/lib/module/hooks/computer_vision/useClassification.js +4 -4
  171. package/lib/module/hooks/computer_vision/useClassification.js.map +1 -1
  172. package/lib/module/hooks/computer_vision/useImageEmbeddings.js +13 -0
  173. package/lib/module/hooks/computer_vision/useImageEmbeddings.js.map +1 -0
  174. package/lib/module/hooks/computer_vision/useImageSegmentation.js +2 -2
  175. package/lib/module/hooks/computer_vision/useImageSegmentation.js.map +1 -1
  176. package/lib/module/hooks/computer_vision/useOCR.js +16 -17
  177. package/lib/module/hooks/computer_vision/useOCR.js.map +1 -1
  178. package/lib/module/hooks/computer_vision/useObjectDetection.js +3 -3
  179. package/lib/module/hooks/computer_vision/useObjectDetection.js.map +1 -1
  180. package/lib/module/hooks/computer_vision/useStyleTransfer.js +3 -3
  181. package/lib/module/hooks/computer_vision/useStyleTransfer.js.map +1 -1
  182. package/lib/module/hooks/computer_vision/useTextToImage.js +57 -0
  183. package/lib/module/hooks/computer_vision/useTextToImage.js.map +1 -0
  184. package/lib/module/hooks/computer_vision/useVerticalOCR.js +18 -19
  185. package/lib/module/hooks/computer_vision/useVerticalOCR.js.map +1 -1
  186. package/lib/module/hooks/general/useExecutorchModule.js +1 -1
  187. package/lib/module/hooks/general/useExecutorchModule.js.map +1 -1
  188. package/lib/module/hooks/natural_language_processing/useLLM.js +30 -29
  189. package/lib/module/hooks/natural_language_processing/useLLM.js.map +1 -1
  190. package/lib/module/hooks/natural_language_processing/useSpeechToText.js +72 -33
  191. package/lib/module/hooks/natural_language_processing/useSpeechToText.js.map +1 -1
  192. package/lib/module/hooks/natural_language_processing/useTextEmbeddings.js +2 -3
  193. package/lib/module/hooks/natural_language_processing/useTextEmbeddings.js.map +1 -1
  194. package/lib/module/hooks/natural_language_processing/useTokenizer.js +19 -18
  195. package/lib/module/hooks/natural_language_processing/useTokenizer.js.map +1 -1
  196. package/lib/module/hooks/natural_language_processing/useVAD.js +13 -0
  197. package/lib/module/hooks/natural_language_processing/useVAD.js.map +1 -0
  198. package/lib/module/hooks/useModule.js +13 -9
  199. package/lib/module/hooks/useModule.js.map +1 -1
  200. package/lib/module/index.js +21 -3
  201. package/lib/module/index.js.map +1 -1
  202. package/lib/module/modules/BaseModule.js +9 -14
  203. package/lib/module/modules/BaseModule.js.map +1 -1
  204. package/lib/module/modules/computer_vision/ClassificationModule.js +11 -6
  205. package/lib/module/modules/computer_vision/ClassificationModule.js.map +1 -1
  206. package/lib/module/modules/computer_vision/ImageEmbeddingsModule.js +19 -0
  207. package/lib/module/modules/computer_vision/ImageEmbeddingsModule.js.map +1 -0
  208. package/lib/module/modules/computer_vision/ImageSegmentationModule.js +20 -18
  209. package/lib/module/modules/computer_vision/ImageSegmentationModule.js.map +1 -1
  210. package/lib/module/modules/computer_vision/OCRModule.js +13 -10
  211. package/lib/module/modules/computer_vision/OCRModule.js.map +1 -1
  212. package/lib/module/modules/computer_vision/ObjectDetectionModule.js +11 -6
  213. package/lib/module/modules/computer_vision/ObjectDetectionModule.js.map +1 -1
  214. package/lib/module/modules/computer_vision/StyleTransferModule.js +11 -6
  215. package/lib/module/modules/computer_vision/StyleTransferModule.js.map +1 -1
  216. package/lib/module/modules/computer_vision/TextToImageModule.js +48 -0
  217. package/lib/module/modules/computer_vision/TextToImageModule.js.map +1 -0
  218. package/lib/module/modules/computer_vision/VerticalOCRModule.js +15 -10
  219. package/lib/module/modules/computer_vision/VerticalOCRModule.js.map +1 -1
  220. package/lib/module/modules/general/ExecutorchModule.js +8 -34
  221. package/lib/module/modules/general/ExecutorchModule.js.map +1 -1
  222. package/lib/module/modules/natural_language_processing/LLMModule.js +25 -24
  223. package/lib/module/modules/natural_language_processing/LLMModule.js.map +1 -1
  224. package/lib/module/modules/natural_language_processing/SpeechToTextModule.js +109 -27
  225. package/lib/module/modules/natural_language_processing/SpeechToTextModule.js.map +1 -1
  226. package/lib/module/modules/natural_language_processing/TextEmbeddingsModule.js +13 -6
  227. package/lib/module/modules/natural_language_processing/TextEmbeddingsModule.js.map +1 -1
  228. package/lib/module/modules/natural_language_processing/TokenizerModule.js +20 -14
  229. package/lib/module/modules/natural_language_processing/TokenizerModule.js.map +1 -1
  230. package/lib/module/modules/natural_language_processing/VADModule.js +19 -0
  231. package/lib/module/modules/natural_language_processing/VADModule.js.map +1 -0
  232. package/lib/module/native/NativeETInstaller.js +5 -0
  233. package/lib/module/native/NativeETInstaller.js.map +1 -0
  234. package/lib/module/native/RnExecutorchModules.js +2 -12
  235. package/lib/module/native/RnExecutorchModules.js.map +1 -1
  236. package/lib/module/types/common.js +25 -8
  237. package/lib/module/types/common.js.map +1 -1
  238. package/lib/module/types/llm.js.map +1 -1
  239. package/lib/module/types/stt.js +1 -79
  240. package/lib/module/types/stt.js.map +1 -1
  241. package/lib/module/types/vad.js +2 -0
  242. package/lib/module/types/vad.js.map +1 -0
  243. package/lib/module/utils/ResourceFetcher.js +275 -114
  244. package/lib/module/utils/ResourceFetcher.js.map +1 -1
  245. package/lib/module/utils/ResourceFetcherUtils.js +155 -0
  246. package/lib/module/utils/ResourceFetcherUtils.js.map +1 -0
  247. package/lib/module/utils/llm.js +41 -1
  248. package/lib/module/utils/llm.js.map +1 -1
  249. package/lib/typescript/Error.d.ts +3 -0
  250. package/lib/typescript/Error.d.ts.map +1 -1
  251. package/lib/typescript/common/Logger.d.ts +9 -0
  252. package/lib/typescript/common/Logger.d.ts.map +1 -0
  253. package/lib/typescript/constants/llmDefaults.d.ts +1 -0
  254. package/lib/typescript/constants/llmDefaults.d.ts.map +1 -1
  255. package/lib/typescript/constants/modelUrls.d.ts +263 -79
  256. package/lib/typescript/constants/modelUrls.d.ts.map +1 -1
  257. package/lib/typescript/constants/ocr/models.d.ts +882 -284
  258. package/lib/typescript/constants/ocr/models.d.ts.map +1 -1
  259. package/lib/typescript/constants/ocr/symbols.d.ts +1 -1
  260. package/lib/typescript/constants/ocr/symbols.d.ts.map +1 -1
  261. package/lib/typescript/controllers/LLMController.d.ts +8 -7
  262. package/lib/typescript/controllers/LLMController.d.ts.map +1 -1
  263. package/lib/typescript/controllers/OCRController.d.ts +5 -6
  264. package/lib/typescript/controllers/OCRController.d.ts.map +1 -1
  265. package/lib/typescript/controllers/VerticalOCRController.d.ts +5 -6
  266. package/lib/typescript/controllers/VerticalOCRController.d.ts.map +1 -1
  267. package/lib/typescript/hooks/computer_vision/useClassification.d.ts +8 -6
  268. package/lib/typescript/hooks/computer_vision/useClassification.d.ts.map +1 -1
  269. package/lib/typescript/hooks/computer_vision/useImageEmbeddings.d.ts +16 -0
  270. package/lib/typescript/hooks/computer_vision/useImageEmbeddings.d.ts.map +1 -0
  271. package/lib/typescript/hooks/computer_vision/useImageSegmentation.d.ts +5 -3
  272. package/lib/typescript/hooks/computer_vision/useImageSegmentation.d.ts.map +1 -1
  273. package/lib/typescript/hooks/computer_vision/useOCR.d.ts +5 -5
  274. package/lib/typescript/hooks/computer_vision/useOCR.d.ts.map +1 -1
  275. package/lib/typescript/hooks/computer_vision/useObjectDetection.d.ts +5 -3
  276. package/lib/typescript/hooks/computer_vision/useObjectDetection.d.ts.map +1 -1
  277. package/lib/typescript/hooks/computer_vision/useStyleTransfer.d.ts +5 -3
  278. package/lib/typescript/hooks/computer_vision/useStyleTransfer.d.ts.map +1 -1
  279. package/lib/typescript/hooks/computer_vision/useTextToImage.d.ts +22 -0
  280. package/lib/typescript/hooks/computer_vision/useTextToImage.d.ts.map +1 -0
  281. package/lib/typescript/hooks/computer_vision/useVerticalOCR.d.ts +4 -6
  282. package/lib/typescript/hooks/computer_vision/useVerticalOCR.d.ts.map +1 -1
  283. package/lib/typescript/hooks/general/useExecutorchModule.d.ts +1 -1
  284. package/lib/typescript/hooks/natural_language_processing/useLLM.d.ts +6 -4
  285. package/lib/typescript/hooks/natural_language_processing/useLLM.d.ts.map +1 -1
  286. package/lib/typescript/hooks/natural_language_processing/useSpeechToText.d.ts +15 -22
  287. package/lib/typescript/hooks/natural_language_processing/useSpeechToText.d.ts.map +1 -1
  288. package/lib/typescript/hooks/natural_language_processing/useTextEmbeddings.d.ts +9 -5
  289. package/lib/typescript/hooks/natural_language_processing/useTextEmbeddings.d.ts.map +1 -1
  290. package/lib/typescript/hooks/natural_language_processing/useTokenizer.d.ts +6 -4
  291. package/lib/typescript/hooks/natural_language_processing/useTokenizer.d.ts.map +1 -1
  292. package/lib/typescript/hooks/natural_language_processing/useVAD.d.ts +16 -0
  293. package/lib/typescript/hooks/natural_language_processing/useVAD.d.ts.map +1 -0
  294. package/lib/typescript/hooks/useModule.d.ts +8 -5
  295. package/lib/typescript/hooks/useModule.d.ts.map +1 -1
  296. package/lib/typescript/index.d.ts +26 -3
  297. package/lib/typescript/index.d.ts.map +1 -1
  298. package/lib/typescript/modules/BaseModule.d.ts +7 -6
  299. package/lib/typescript/modules/BaseModule.d.ts.map +1 -1
  300. package/lib/typescript/modules/computer_vision/ClassificationModule.d.ts +4 -4
  301. package/lib/typescript/modules/computer_vision/ClassificationModule.d.ts.map +1 -1
  302. package/lib/typescript/modules/computer_vision/ImageEmbeddingsModule.d.ts +9 -0
  303. package/lib/typescript/modules/computer_vision/ImageEmbeddingsModule.d.ts.map +1 -0
  304. package/lib/typescript/modules/computer_vision/ImageSegmentationModule.d.ts +7 -27
  305. package/lib/typescript/modules/computer_vision/ImageSegmentationModule.d.ts.map +1 -1
  306. package/lib/typescript/modules/computer_vision/OCRModule.d.ts +8 -7
  307. package/lib/typescript/modules/computer_vision/OCRModule.d.ts.map +1 -1
  308. package/lib/typescript/modules/computer_vision/ObjectDetectionModule.d.ts +5 -3
  309. package/lib/typescript/modules/computer_vision/ObjectDetectionModule.d.ts.map +1 -1
  310. package/lib/typescript/modules/computer_vision/StyleTransferModule.d.ts +4 -3
  311. package/lib/typescript/modules/computer_vision/StyleTransferModule.d.ts.map +1 -1
  312. package/lib/typescript/modules/computer_vision/TextToImageModule.d.ts +16 -0
  313. package/lib/typescript/modules/computer_vision/TextToImageModule.d.ts.map +1 -0
  314. package/lib/typescript/modules/computer_vision/VerticalOCRModule.d.ts +7 -8
  315. package/lib/typescript/modules/computer_vision/VerticalOCRModule.d.ts.map +1 -1
  316. package/lib/typescript/modules/general/ExecutorchModule.d.ts +4 -7
  317. package/lib/typescript/modules/general/ExecutorchModule.d.ts.map +1 -1
  318. package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts +19 -17
  319. package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts.map +1 -1
  320. package/lib/typescript/modules/natural_language_processing/SpeechToTextModule.d.ts +17 -13
  321. package/lib/typescript/modules/natural_language_processing/SpeechToTextModule.d.ts.map +1 -1
  322. package/lib/typescript/modules/natural_language_processing/TextEmbeddingsModule.d.ts +5 -3
  323. package/lib/typescript/modules/natural_language_processing/TextEmbeddingsModule.d.ts.map +1 -1
  324. package/lib/typescript/modules/natural_language_processing/TokenizerModule.d.ts +10 -9
  325. package/lib/typescript/modules/natural_language_processing/TokenizerModule.d.ts.map +1 -1
  326. package/lib/typescript/modules/natural_language_processing/VADModule.d.ts +10 -0
  327. package/lib/typescript/modules/natural_language_processing/VADModule.d.ts.map +1 -0
  328. package/lib/typescript/native/{NativeStyleTransfer.d.ts → NativeETInstaller.d.ts} +2 -3
  329. package/lib/typescript/native/NativeETInstaller.d.ts.map +1 -0
  330. package/lib/typescript/native/RnExecutorchModules.d.ts +3 -23
  331. package/lib/typescript/native/RnExecutorchModules.d.ts.map +1 -1
  332. package/lib/typescript/types/common.d.ts +30 -2
  333. package/lib/typescript/types/common.d.ts.map +1 -1
  334. package/lib/typescript/types/llm.d.ts +9 -1
  335. package/lib/typescript/types/llm.d.ts.map +1 -1
  336. package/lib/typescript/types/stt.d.ts +9 -88
  337. package/lib/typescript/types/stt.d.ts.map +1 -1
  338. package/lib/typescript/types/vad.d.ts +5 -0
  339. package/lib/typescript/types/vad.d.ts.map +1 -0
  340. package/lib/typescript/utils/ResourceFetcher.d.ts +47 -10
  341. package/lib/typescript/utils/ResourceFetcher.d.ts.map +1 -1
  342. package/lib/typescript/utils/ResourceFetcherUtils.d.ts +55 -0
  343. package/lib/typescript/utils/ResourceFetcherUtils.d.ts.map +1 -0
  344. package/lib/typescript/utils/llm.d.ts +4 -0
  345. package/lib/typescript/utils/llm.d.ts.map +1 -1
  346. package/package.json +32 -68
  347. package/react-native-executorch.podspec +62 -4
  348. package/src/Error.ts +3 -0
  349. package/src/common/Logger.ts +25 -0
  350. package/src/constants/directories.ts +1 -1
  351. package/src/constants/llmDefaults.ts +11 -0
  352. package/src/constants/modelUrls.ts +433 -168
  353. package/src/constants/ocr/models.ts +826 -395
  354. package/src/constants/ocr/symbols.ts +66 -65
  355. package/src/controllers/LLMController.ts +76 -36
  356. package/src/controllers/OCRController.ts +25 -16
  357. package/src/controllers/VerticalOCRController.ts +25 -15
  358. package/src/hooks/computer_vision/useClassification.ts +8 -9
  359. package/src/hooks/computer_vision/useImageEmbeddings.ts +15 -0
  360. package/src/hooks/computer_vision/useImageSegmentation.ts +3 -6
  361. package/src/hooks/computer_vision/useOCR.ts +32 -25
  362. package/src/hooks/computer_vision/useObjectDetection.ts +4 -7
  363. package/src/hooks/computer_vision/useStyleTransfer.ts +4 -4
  364. package/src/hooks/computer_vision/useTextToImage.ts +92 -0
  365. package/src/hooks/computer_vision/useVerticalOCR.ts +33 -31
  366. package/src/hooks/general/useExecutorchModule.ts +1 -1
  367. package/src/hooks/natural_language_processing/useLLM.ts +54 -31
  368. package/src/hooks/natural_language_processing/useSpeechToText.ts +96 -88
  369. package/src/hooks/natural_language_processing/useTextEmbeddings.ts +9 -9
  370. package/src/hooks/natural_language_processing/useTokenizer.ts +21 -21
  371. package/src/hooks/natural_language_processing/useVAD.ts +15 -0
  372. package/src/hooks/useModule.ts +23 -13
  373. package/src/index.ts +126 -0
  374. package/src/modules/BaseModule.ts +17 -22
  375. package/src/modules/computer_vision/ClassificationModule.ts +18 -9
  376. package/src/modules/computer_vision/ImageEmbeddingsModule.ts +26 -0
  377. package/src/modules/computer_vision/ImageSegmentationModule.ts +34 -26
  378. package/src/modules/computer_vision/OCRModule.ts +23 -15
  379. package/src/modules/computer_vision/ObjectDetectionModule.ts +22 -9
  380. package/src/modules/computer_vision/StyleTransferModule.ts +18 -9
  381. package/src/modules/computer_vision/TextToImageModule.ts +93 -0
  382. package/src/modules/computer_vision/VerticalOCRModule.ts +25 -21
  383. package/src/modules/general/ExecutorchModule.ts +16 -46
  384. package/src/modules/natural_language_processing/LLMModule.ts +41 -32
  385. package/src/modules/natural_language_processing/SpeechToTextModule.ts +164 -66
  386. package/src/modules/natural_language_processing/TextEmbeddingsModule.ts +25 -10
  387. package/src/modules/natural_language_processing/TokenizerModule.ts +27 -17
  388. package/src/modules/natural_language_processing/VADModule.ts +27 -0
  389. package/src/native/NativeETInstaller.ts +8 -0
  390. package/src/native/RnExecutorchModules.ts +4 -50
  391. package/src/types/common.ts +40 -12
  392. package/src/types/llm.ts +10 -0
  393. package/src/types/stt.ts +87 -90
  394. package/src/types/vad.ts +4 -0
  395. package/src/utils/ResourceFetcher.ts +342 -120
  396. package/src/utils/ResourceFetcherUtils.ts +184 -0
  397. package/src/utils/llm.ts +65 -1
  398. package/third-party/android/libs/cpuinfo/arm64-v8a/libcpuinfo.so +0 -0
  399. package/third-party/android/libs/executorch/arm64-v8a/libexecutorch.so +0 -0
  400. package/third-party/android/libs/executorch/x86_64/libexecutorch.so +0 -0
  401. package/third-party/android/libs/opencv/arm64-v8a/libopencv_core.a +0 -0
  402. package/third-party/android/libs/opencv/arm64-v8a/libopencv_features2d.a +0 -0
  403. package/third-party/android/libs/opencv/arm64-v8a/libopencv_highgui.a +0 -0
  404. package/third-party/android/libs/opencv/arm64-v8a/libopencv_imgproc.a +0 -0
  405. package/third-party/android/libs/opencv/arm64-v8a/libopencv_photo.a +0 -0
  406. package/third-party/android/libs/opencv/arm64-v8a/libopencv_video.a +0 -0
  407. package/third-party/android/libs/opencv/x86_64/libopencv_core.a +0 -0
  408. package/third-party/android/libs/opencv/x86_64/libopencv_features2d.a +0 -0
  409. package/third-party/android/libs/opencv/x86_64/libopencv_highgui.a +0 -0
  410. package/third-party/android/libs/opencv/x86_64/libopencv_imgproc.a +0 -0
  411. package/third-party/android/libs/opencv/x86_64/libopencv_photo.a +0 -0
  412. package/third-party/android/libs/opencv/x86_64/libopencv_video.a +0 -0
  413. package/third-party/android/libs/opencv-third-party/arm64-v8a/libkleidicv.a +0 -0
  414. package/third-party/android/libs/opencv-third-party/arm64-v8a/libkleidicv_hal.a +0 -0
  415. package/third-party/android/libs/opencv-third-party/arm64-v8a/libkleidicv_thread.a +0 -0
  416. package/third-party/android/libs/pthreadpool/arm64-v8a/libpthreadpool.so +0 -0
  417. package/third-party/android/libs/tokenizers-cpp/arm64-v8a/libsentencepiece.a +0 -0
  418. package/third-party/android/libs/tokenizers-cpp/arm64-v8a/libtokenizers_c.a +0 -0
  419. package/third-party/android/libs/tokenizers-cpp/arm64-v8a/libtokenizers_cpp.a +0 -0
  420. package/{ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/ExecutorchLib → third-party/android/libs/tokenizers-cpp/x86_64/libsentencepiece.a} +0 -0
  421. package/third-party/android/libs/tokenizers-cpp/x86_64/libtokenizers_c.a +0 -0
  422. package/third-party/android/libs/tokenizers-cpp/x86_64/libtokenizers_cpp.a +0 -0
  423. package/third-party/include/c10/macros/Export.h +1 -0
  424. package/third-party/include/c10/macros/Macros.h +1 -0
  425. package/third-party/include/c10/util/BFloat16-inl.h +1 -0
  426. package/third-party/include/c10/util/BFloat16-math.h +266 -0
  427. package/third-party/include/c10/util/BFloat16.h +1 -0
  428. package/third-party/include/c10/util/Half-inl.h +1 -0
  429. package/third-party/include/c10/util/Half.h +8 -0
  430. package/third-party/include/c10/util/TypeSafeSignMath.h +1 -0
  431. package/third-party/include/c10/util/bit_cast.h +1 -0
  432. package/third-party/include/c10/util/complex.h +72 -0
  433. package/third-party/include/c10/util/complex_math.h +399 -0
  434. package/third-party/include/c10/util/complex_utils.h +41 -0
  435. package/third-party/include/c10/util/floating_point_utils.h +1 -0
  436. package/third-party/include/c10/util/irange.h +107 -0
  437. package/third-party/include/c10/util/llvmMathExtras.h +866 -0
  438. package/third-party/include/c10/util/overflows.h +95 -0
  439. package/third-party/include/c10/util/safe_numerics.h +97 -0
  440. package/third-party/include/cpuinfo/cpuinfo.h +2305 -0
  441. package/third-party/include/executorch/ExecuTorch.h +13 -0
  442. package/third-party/include/executorch/ExecuTorchError.h +90 -0
  443. package/third-party/include/executorch/ExecuTorchLLM/ExecuTorchLLM.h +12 -0
  444. package/third-party/include/executorch/ExecuTorchLLM/ExecuTorchLLMConfig.h +56 -0
  445. package/third-party/include/executorch/ExecuTorchLLM/ExecuTorchLLMError.h +16 -0
  446. package/third-party/include/executorch/ExecuTorchLLM/ExecuTorchLLMMultimodalRunner.h +227 -0
  447. package/third-party/include/executorch/ExecuTorchLLM/ExecuTorchLLMTextRunner.h +97 -0
  448. package/third-party/include/executorch/ExecuTorchLLM/module.modulemap +4 -0
  449. package/third-party/include/executorch/ExecuTorchLog.h +77 -0
  450. package/third-party/include/executorch/ExecuTorchModule.h +563 -0
  451. package/third-party/include/executorch/ExecuTorchTensor.h +1421 -0
  452. package/third-party/include/executorch/ExecuTorchValue.h +265 -0
  453. package/third-party/include/executorch/extension/module/bundled_module.h +131 -0
  454. package/third-party/include/executorch/extension/module/module.h +649 -0
  455. package/third-party/include/executorch/extension/tensor/tensor.h +14 -0
  456. package/third-party/include/executorch/extension/tensor/tensor_accessor.h +190 -0
  457. package/third-party/include/executorch/extension/tensor/tensor_ptr.h +409 -0
  458. package/third-party/include/executorch/extension/tensor/tensor_ptr_maker.h +653 -0
  459. package/third-party/include/executorch/extension/threadpool/cpuinfo_utils.h +24 -0
  460. package/third-party/include/executorch/extension/threadpool/threadpool.h +95 -0
  461. package/third-party/include/executorch/runtime/backend/backend_execution_context.h +71 -0
  462. package/third-party/include/executorch/runtime/backend/backend_init_context.h +84 -0
  463. package/third-party/include/executorch/runtime/backend/backend_option_context.h +34 -0
  464. package/third-party/include/executorch/runtime/backend/interface.h +227 -0
  465. package/third-party/include/executorch/runtime/backend/options.h +206 -0
  466. package/third-party/include/executorch/runtime/core/array_ref.h +235 -0
  467. package/third-party/include/executorch/runtime/core/data_loader.h +136 -0
  468. package/third-party/include/executorch/runtime/core/defines.h +20 -0
  469. package/third-party/include/executorch/runtime/core/error.h +256 -0
  470. package/third-party/include/executorch/runtime/core/evalue.h +515 -0
  471. package/third-party/include/executorch/runtime/core/event_tracer.h +580 -0
  472. package/third-party/include/executorch/runtime/core/event_tracer_hooks.h +332 -0
  473. package/third-party/include/executorch/runtime/core/event_tracer_hooks_delegate.h +197 -0
  474. package/third-party/include/executorch/runtime/core/exec_aten/exec_aten.h +170 -0
  475. package/third-party/include/executorch/runtime/core/exec_aten/util/dim_order_util.h +264 -0
  476. package/third-party/include/executorch/runtime/core/exec_aten/util/scalar_type_util.h +1313 -0
  477. package/third-party/include/executorch/runtime/core/exec_aten/util/tensor_dimension_limit.h +21 -0
  478. package/third-party/include/executorch/runtime/core/exec_aten/util/tensor_shape_to_c_string.h +69 -0
  479. package/third-party/include/executorch/runtime/core/exec_aten/util/tensor_util.h +1251 -0
  480. package/third-party/include/executorch/runtime/core/freeable_buffer.h +107 -0
  481. package/third-party/include/executorch/runtime/core/function_ref.h +100 -0
  482. package/third-party/include/executorch/runtime/core/hierarchical_allocator.h +107 -0
  483. package/third-party/include/executorch/runtime/core/memory_allocator.h +208 -0
  484. package/third-party/include/executorch/runtime/core/named_data_map.h +76 -0
  485. package/third-party/include/executorch/runtime/core/portable_type/bfloat16.h +27 -0
  486. package/third-party/include/executorch/runtime/core/portable_type/bfloat16_math.h +14 -0
  487. package/third-party/include/executorch/runtime/core/portable_type/bits_types.h +83 -0
  488. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/macros/Export.h +1 -0
  489. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/macros/Macros.h +1 -0
  490. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/BFloat16-inl.h +1 -0
  491. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/BFloat16-math.h +266 -0
  492. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/BFloat16.h +1 -0
  493. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/Half-inl.h +1 -0
  494. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/Half.h +8 -0
  495. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/TypeSafeSignMath.h +1 -0
  496. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/bit_cast.h +1 -0
  497. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/complex.h +72 -0
  498. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/complex_math.h +399 -0
  499. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/complex_utils.h +41 -0
  500. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/floating_point_utils.h +1 -0
  501. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/irange.h +107 -0
  502. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/llvmMathExtras.h +866 -0
  503. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/overflows.h +95 -0
  504. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/safe_numerics.h +97 -0
  505. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/macros/Export.h +154 -0
  506. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/macros/Macros.h +553 -0
  507. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/BFloat16.h +477 -0
  508. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/Half.h +781 -0
  509. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/TypeSafeSignMath.h +141 -0
  510. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/bit_cast.h +49 -0
  511. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/complex.h +593 -0
  512. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/floating_point_utils.h +38 -0
  513. package/third-party/include/executorch/runtime/core/portable_type/complex.h +21 -0
  514. package/third-party/include/executorch/runtime/core/portable_type/device.h +70 -0
  515. package/third-party/include/executorch/runtime/core/portable_type/half.h +27 -0
  516. package/third-party/include/executorch/runtime/core/portable_type/optional.h +36 -0
  517. package/third-party/include/executorch/runtime/core/portable_type/qint_types.h +83 -0
  518. package/third-party/include/executorch/runtime/core/portable_type/scalar.h +110 -0
  519. package/third-party/include/executorch/runtime/core/portable_type/scalar_type.h +154 -0
  520. package/third-party/include/executorch/runtime/core/portable_type/string_view.h +29 -0
  521. package/third-party/include/executorch/runtime/core/portable_type/tensor.h +142 -0
  522. package/third-party/include/executorch/runtime/core/portable_type/tensor_impl.h +281 -0
  523. package/third-party/include/executorch/runtime/core/portable_type/tensor_options.h +60 -0
  524. package/third-party/include/executorch/runtime/core/result.h +258 -0
  525. package/third-party/include/executorch/runtime/core/span.h +97 -0
  526. package/third-party/include/executorch/runtime/core/tag.h +90 -0
  527. package/third-party/include/executorch/runtime/core/tensor_layout.h +79 -0
  528. package/third-party/include/executorch/runtime/core/tensor_shape_dynamism.h +39 -0
  529. package/third-party/include/executorch/runtime/executor/memory_manager.h +113 -0
  530. package/third-party/include/executorch/runtime/executor/merged_data_map.h +142 -0
  531. package/third-party/include/executorch/runtime/executor/method.h +412 -0
  532. package/third-party/include/executorch/runtime/executor/method_meta.h +298 -0
  533. package/third-party/include/executorch/runtime/executor/program.h +309 -0
  534. package/third-party/include/executorch/runtime/executor/pte_data_map.h +145 -0
  535. package/third-party/include/executorch/runtime/executor/tensor_parser.h +157 -0
  536. package/third-party/include/executorch/runtime/kernel/kernel_runtime_context.h +122 -0
  537. package/third-party/include/executorch/runtime/kernel/operator_registry.h +280 -0
  538. package/third-party/include/executorch/runtime/platform/abort.h +36 -0
  539. package/third-party/include/executorch/runtime/platform/assert.h +119 -0
  540. package/third-party/include/executorch/runtime/platform/clock.h +43 -0
  541. package/third-party/include/executorch/runtime/platform/compat_unistd.h +75 -0
  542. package/third-party/include/executorch/runtime/platform/compiler.h +201 -0
  543. package/third-party/include/executorch/runtime/platform/log.h +177 -0
  544. package/third-party/include/executorch/runtime/platform/platform.h +259 -0
  545. package/third-party/include/executorch/runtime/platform/profiler.h +292 -0
  546. package/third-party/include/executorch/runtime/platform/runtime.h +35 -0
  547. package/third-party/include/executorch/runtime/platform/system.h +49 -0
  548. package/third-party/include/executorch/runtime/platform/types.h +24 -0
  549. package/third-party/include/executorch/schema/extended_header.h +85 -0
  550. package/third-party/include/headeronly/macros/Export.h +88 -0
  551. package/third-party/include/opencv2/core/affine.hpp +676 -0
  552. package/third-party/include/opencv2/core/async.hpp +107 -0
  553. package/third-party/include/opencv2/core/base.hpp +735 -0
  554. package/third-party/include/opencv2/core/bindings_utils.hpp +279 -0
  555. package/third-party/include/opencv2/core/bufferpool.hpp +39 -0
  556. package/third-party/include/opencv2/core/check.hpp +231 -0
  557. package/third-party/include/opencv2/core/core.hpp +55 -0
  558. package/third-party/include/opencv2/core/core_c.h +3261 -0
  559. package/third-party/include/opencv2/core/cv_cpu_dispatch.h +404 -0
  560. package/third-party/include/opencv2/core/cv_cpu_helper.h +856 -0
  561. package/third-party/include/opencv2/core/cvdef.h +1003 -0
  562. package/third-party/include/opencv2/core/cvstd.hpp +196 -0
  563. package/third-party/include/opencv2/core/cvstd.inl.hpp +188 -0
  564. package/third-party/include/opencv2/core/cvstd_wrapper.hpp +187 -0
  565. package/third-party/include/opencv2/core/detail/async_promise.hpp +73 -0
  566. package/third-party/include/opencv2/core/detail/dispatch_helper.impl.hpp +48 -0
  567. package/third-party/include/opencv2/core/detail/exception_ptr.hpp +24 -0
  568. package/third-party/include/opencv2/core/dualquaternion.hpp +1054 -0
  569. package/third-party/include/opencv2/core/dualquaternion.inl.hpp +464 -0
  570. package/third-party/include/opencv2/core/eigen.hpp +405 -0
  571. package/third-party/include/opencv2/core/fast_math.hpp +433 -0
  572. package/third-party/include/opencv2/core/hal/hal.hpp +451 -0
  573. package/third-party/include/opencv2/core/hal/interface.h +191 -0
  574. package/third-party/include/opencv2/core/hal/intrin.hpp +1222 -0
  575. package/third-party/include/opencv2/core/hal/intrin_avx.hpp +3378 -0
  576. package/third-party/include/opencv2/core/hal/intrin_avx512.hpp +3688 -0
  577. package/third-party/include/opencv2/core/hal/intrin_cpp.hpp +3446 -0
  578. package/third-party/include/opencv2/core/hal/intrin_forward.hpp +195 -0
  579. package/third-party/include/opencv2/core/hal/intrin_lasx.hpp +3243 -0
  580. package/third-party/include/opencv2/core/hal/intrin_lsx.hpp +2671 -0
  581. package/third-party/include/opencv2/core/hal/intrin_math.hpp +772 -0
  582. package/third-party/include/opencv2/core/hal/intrin_msa.hpp +1973 -0
  583. package/third-party/include/opencv2/core/hal/intrin_neon.hpp +2710 -0
  584. package/third-party/include/opencv2/core/hal/intrin_rvv071.hpp +3452 -0
  585. package/third-party/include/opencv2/core/hal/intrin_rvv_scalable.hpp +2559 -0
  586. package/third-party/include/opencv2/core/hal/intrin_sse.hpp +3528 -0
  587. package/third-party/include/opencv2/core/hal/intrin_sse_em.hpp +175 -0
  588. package/third-party/include/opencv2/core/hal/intrin_vsx.hpp +1756 -0
  589. package/third-party/include/opencv2/core/hal/intrin_wasm.hpp +2911 -0
  590. package/third-party/include/opencv2/core/hal/msa_macros.h +2079 -0
  591. package/third-party/include/opencv2/core/hal/simd_utils.impl.hpp +313 -0
  592. package/third-party/include/opencv2/core/mat.hpp +3842 -0
  593. package/third-party/include/opencv2/core/mat.inl.hpp +2753 -0
  594. package/third-party/include/opencv2/core/matx.hpp +603 -0
  595. package/third-party/include/opencv2/core/matx.inl.hpp +1132 -0
  596. package/third-party/include/opencv2/core/neon_utils.hpp +127 -0
  597. package/third-party/include/opencv2/core/operations.hpp +610 -0
  598. package/third-party/include/opencv2/core/optim.hpp +362 -0
  599. package/third-party/include/opencv2/core/parallel/backend/parallel_for.openmp.hpp +66 -0
  600. package/third-party/include/opencv2/core/parallel/backend/parallel_for.tbb.hpp +148 -0
  601. package/third-party/include/opencv2/core/parallel/parallel_backend.hpp +108 -0
  602. package/third-party/include/opencv2/core/persistence.hpp +1321 -0
  603. package/third-party/include/opencv2/core/quaternion.hpp +1889 -0
  604. package/third-party/include/opencv2/core/quaternion.inl.hpp +907 -0
  605. package/third-party/include/opencv2/core/saturate.hpp +347 -0
  606. package/third-party/include/opencv2/core/simd_intrinsics.hpp +90 -0
  607. package/third-party/include/opencv2/core/softfloat.hpp +657 -0
  608. package/third-party/include/opencv2/core/sse_utils.hpp +861 -0
  609. package/third-party/include/opencv2/core/traits.hpp +417 -0
  610. package/third-party/include/opencv2/core/types.hpp +2368 -0
  611. package/third-party/include/opencv2/core/types_c.h +2064 -0
  612. package/third-party/include/opencv2/core/utility.hpp +1296 -0
  613. package/third-party/include/opencv2/core/utils/allocator_stats.hpp +31 -0
  614. package/third-party/include/opencv2/core/utils/allocator_stats.impl.hpp +111 -0
  615. package/third-party/include/opencv2/core/utils/filesystem.hpp +91 -0
  616. package/third-party/include/opencv2/core/utils/fp_control_utils.hpp +70 -0
  617. package/third-party/include/opencv2/core/utils/instrumentation.hpp +127 -0
  618. package/third-party/include/opencv2/core/utils/logger.defines.hpp +50 -0
  619. package/third-party/include/opencv2/core/utils/logger.hpp +258 -0
  620. package/third-party/include/opencv2/core/utils/logtag.hpp +27 -0
  621. package/third-party/include/opencv2/core/utils/tls.hpp +230 -0
  622. package/third-party/include/opencv2/core/utils/trace.hpp +281 -0
  623. package/third-party/include/opencv2/core/version.hpp +29 -0
  624. package/third-party/include/opencv2/core/vsx_utils.hpp +1115 -0
  625. package/third-party/include/opencv2/core.hpp +3699 -0
  626. package/third-party/include/opencv2/cvconfig.h +155 -0
  627. package/third-party/include/opencv2/dnn/dnn.hpp +51 -0
  628. package/third-party/include/opencv2/dnn.hpp +17 -0
  629. package/third-party/include/opencv2/features2d/features2d.hpp +55 -0
  630. package/third-party/include/opencv2/features2d/hal/interface.h +32 -0
  631. package/third-party/include/opencv2/features2d.hpp +1756 -0
  632. package/third-party/include/opencv2/highgui/highgui.hpp +113 -0
  633. package/third-party/include/opencv2/highgui.hpp +17 -0
  634. package/third-party/include/opencv2/imgproc/bindings.hpp +34 -0
  635. package/third-party/include/opencv2/imgproc/detail/gcgraph.hpp +355 -0
  636. package/third-party/include/opencv2/imgproc/detail/legacy.hpp +35 -0
  637. package/third-party/include/opencv2/imgproc/hal/hal.hpp +246 -0
  638. package/third-party/include/opencv2/imgproc/hal/interface.h +52 -0
  639. package/third-party/include/opencv2/imgproc/imgproc.hpp +55 -0
  640. package/third-party/include/opencv2/imgproc/imgproc_c.h +1261 -0
  641. package/third-party/include/opencv2/imgproc/segmentation.hpp +168 -0
  642. package/third-party/include/opencv2/imgproc/types_c.h +632 -0
  643. package/third-party/include/opencv2/imgproc.hpp +5956 -0
  644. package/third-party/include/opencv2/opencv.hpp +102 -0
  645. package/third-party/include/opencv2/opencv_modules.hpp +19 -0
  646. package/third-party/include/opencv2/photo/legacy/constants_c.h +10 -0
  647. package/third-party/include/opencv2/photo/photo.hpp +55 -0
  648. package/third-party/include/opencv2/photo.hpp +975 -0
  649. package/third-party/include/opencv2/video/background_segm.hpp +341 -0
  650. package/third-party/include/opencv2/video/detail/tracking.detail.hpp +435 -0
  651. package/third-party/include/opencv2/video/legacy/constants_c.h +15 -0
  652. package/third-party/include/opencv2/video/tracking.hpp +1014 -0
  653. package/third-party/include/opencv2/video/video.hpp +55 -0
  654. package/third-party/include/opencv2/video.hpp +65 -0
  655. package/third-party/include/pthreadpool/pthreadpool.h +2236 -0
  656. package/third-party/include/tokenizers-cpp/tokenizers_c.h +61 -0
  657. package/third-party/include/tokenizers-cpp/tokenizers_cpp.h +118 -0
  658. package/third-party/include/torch/headeronly/macros/Export.h +154 -0
  659. package/third-party/include/torch/headeronly/macros/Macros.h +553 -0
  660. package/third-party/include/torch/headeronly/util/BFloat16.h +477 -0
  661. package/third-party/include/torch/headeronly/util/Half.h +781 -0
  662. package/third-party/include/torch/headeronly/util/TypeSafeSignMath.h +141 -0
  663. package/third-party/include/torch/headeronly/util/bit_cast.h +49 -0
  664. package/third-party/include/torch/headeronly/util/complex.h +593 -0
  665. package/third-party/include/torch/headeronly/util/floating_point_utils.h +38 -0
  666. package/third-party/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/ExecutorchLib +0 -0
  667. package/{ios → third-party/ios}/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Info.plist +0 -0
  668. package/third-party/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/ExecutorchLib +0 -0
  669. package/{ios → third-party/ios}/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Info.plist +0 -0
  670. package/third-party/ios/libs/cpuinfo/libcpuinfo.a +0 -0
  671. package/third-party/ios/libs/pthreadpool/physical-arm64-release/libpthreadpool.a +0 -0
  672. package/third-party/ios/libs/pthreadpool/simulator-arm64-debug/libpthreadpool.a +0 -0
  673. package/third-party/ios/libs/tokenizers-cpp/physical-arm64-release/libsentencepiece.a +0 -0
  674. package/{ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/ExecutorchLib → third-party/ios/libs/tokenizers-cpp/physical-arm64-release/libtokenizers_c.a} +0 -0
  675. package/third-party/ios/libs/tokenizers-cpp/physical-arm64-release/libtokenizers_cpp.a +0 -0
  676. package/third-party/ios/libs/tokenizers-cpp/simulator-arm64-debug/libsentencepiece.a +0 -0
  677. package/third-party/ios/libs/tokenizers-cpp/simulator-arm64-debug/libtokenizers_c.a +0 -0
  678. package/third-party/ios/libs/tokenizers-cpp/simulator-arm64-debug/libtokenizers_cpp.a +0 -0
  679. package/LICENSE +0 -79
  680. package/android/src/main/java/com/swmansion/rnexecutorch/Classification.kt +0 -64
  681. package/android/src/main/java/com/swmansion/rnexecutorch/ETModule.kt +0 -90
  682. package/android/src/main/java/com/swmansion/rnexecutorch/ImageSegmentation.kt +0 -58
  683. package/android/src/main/java/com/swmansion/rnexecutorch/LLM.kt +0 -63
  684. package/android/src/main/java/com/swmansion/rnexecutorch/OCR.kt +0 -90
  685. package/android/src/main/java/com/swmansion/rnexecutorch/ObjectDetection.kt +0 -64
  686. package/android/src/main/java/com/swmansion/rnexecutorch/SpeechToText.kt +0 -91
  687. package/android/src/main/java/com/swmansion/rnexecutorch/StyleTransfer.kt +0 -54
  688. package/android/src/main/java/com/swmansion/rnexecutorch/TextEmbeddings.kt +0 -51
  689. package/android/src/main/java/com/swmansion/rnexecutorch/Tokenizer.kt +0 -86
  690. package/android/src/main/java/com/swmansion/rnexecutorch/VerticalOCR.kt +0 -179
  691. package/android/src/main/java/com/swmansion/rnexecutorch/models/BaseModel.kt +0 -54
  692. package/android/src/main/java/com/swmansion/rnexecutorch/models/TextEmbeddings/TextEmbeddingsModel.kt +0 -48
  693. package/android/src/main/java/com/swmansion/rnexecutorch/models/TextEmbeddings/TextEmbeddingsUtils.kt +0 -37
  694. package/android/src/main/java/com/swmansion/rnexecutorch/models/classification/ClassificationModel.kt +0 -46
  695. package/android/src/main/java/com/swmansion/rnexecutorch/models/classification/Constants.kt +0 -1005
  696. package/android/src/main/java/com/swmansion/rnexecutorch/models/imageSegmentation/Constants.kt +0 -26
  697. package/android/src/main/java/com/swmansion/rnexecutorch/models/imageSegmentation/ImageSegmentationModel.kt +0 -142
  698. package/android/src/main/java/com/swmansion/rnexecutorch/models/objectDetection/SSDLiteLargeModel.kt +0 -74
  699. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/Detector.kt +0 -82
  700. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/RecognitionHandler.kt +0 -117
  701. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/Recognizer.kt +0 -51
  702. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/VerticalDetector.kt +0 -89
  703. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/CTCLabelConverter.kt +0 -58
  704. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/Constants.kt +0 -31
  705. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/DetectorUtils.kt +0 -608
  706. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/RecognizerUtils.kt +0 -430
  707. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/BaseS2TDecoder.kt +0 -39
  708. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/BaseS2TModule.kt +0 -43
  709. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/Moonshine.kt +0 -16
  710. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/MoonshineDecoder.kt +0 -23
  711. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/MoonshineEncoder.kt +0 -20
  712. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/Whisper.kt +0 -16
  713. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/WhisperDecoder.kt +0 -22
  714. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/WhisperEncoder.kt +0 -29
  715. package/android/src/main/java/com/swmansion/rnexecutorch/models/styleTransfer/StyleTransferModel.kt +0 -43
  716. package/android/src/main/java/com/swmansion/rnexecutorch/utils/ArrayUtils.kt +0 -87
  717. package/android/src/main/java/com/swmansion/rnexecutorch/utils/ETError.kt +0 -34
  718. package/android/src/main/java/com/swmansion/rnexecutorch/utils/ImageProcessor.kt +0 -237
  719. package/android/src/main/java/com/swmansion/rnexecutorch/utils/Numerical.kt +0 -8
  720. package/android/src/main/java/com/swmansion/rnexecutorch/utils/ObjectDetectionUtils.kt +0 -201
  721. package/android/src/main/java/com/swmansion/rnexecutorch/utils/STFT.kt +0 -50
  722. package/android/src/main/java/com/swmansion/rnexecutorch/utils/TensorUtils.kt +0 -103
  723. package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Headers/ETModel.h +0 -27
  724. package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Headers/HuggingFaceTokenizer.h +0 -14
  725. package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Headers/LLaMARunner.h +0 -32
  726. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Headers/ETModel.h +0 -27
  727. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Headers/HuggingFaceTokenizer.h +0 -14
  728. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Headers/LLaMARunner.h +0 -32
  729. package/ios/RnExecutorch/Classification.h +0 -5
  730. package/ios/RnExecutorch/Classification.mm +0 -54
  731. package/ios/RnExecutorch/ETModule.h +0 -5
  732. package/ios/RnExecutorch/ETModule.mm +0 -75
  733. package/ios/RnExecutorch/ImageSegmentation.h +0 -5
  734. package/ios/RnExecutorch/ImageSegmentation.mm +0 -60
  735. package/ios/RnExecutorch/LLM.h +0 -5
  736. package/ios/RnExecutorch/LLM.mm +0 -78
  737. package/ios/RnExecutorch/OCR.h +0 -5
  738. package/ios/RnExecutorch/OCR.mm +0 -96
  739. package/ios/RnExecutorch/ObjectDetection.h +0 -5
  740. package/ios/RnExecutorch/ObjectDetection.mm +0 -56
  741. package/ios/RnExecutorch/SpeechToText.h +0 -5
  742. package/ios/RnExecutorch/SpeechToText.mm +0 -125
  743. package/ios/RnExecutorch/StyleTransfer.h +0 -5
  744. package/ios/RnExecutorch/StyleTransfer.mm +0 -55
  745. package/ios/RnExecutorch/TextEmbeddings.h +0 -5
  746. package/ios/RnExecutorch/TextEmbeddings.mm +0 -62
  747. package/ios/RnExecutorch/Tokenizer.h +0 -5
  748. package/ios/RnExecutorch/Tokenizer.mm +0 -83
  749. package/ios/RnExecutorch/VerticalOCR.h +0 -5
  750. package/ios/RnExecutorch/VerticalOCR.mm +0 -183
  751. package/ios/RnExecutorch/models/BaseModel.h +0 -21
  752. package/ios/RnExecutorch/models/BaseModel.mm +0 -43
  753. package/ios/RnExecutorch/models/classification/ClassificationModel.h +0 -10
  754. package/ios/RnExecutorch/models/classification/ClassificationModel.mm +0 -53
  755. package/ios/RnExecutorch/models/classification/Constants.h +0 -3
  756. package/ios/RnExecutorch/models/image_segmentation/Constants.h +0 -4
  757. package/ios/RnExecutorch/models/image_segmentation/ImageSegmentationModel.h +0 -10
  758. package/ios/RnExecutorch/models/image_segmentation/ImageSegmentationModel.mm +0 -146
  759. package/ios/RnExecutorch/models/object_detection/SSDLiteLargeModel.hpp +0 -11
  760. package/ios/RnExecutorch/models/object_detection/SSDLiteLargeModel.mm +0 -64
  761. package/ios/RnExecutorch/models/ocr/Detector.h +0 -9
  762. package/ios/RnExecutorch/models/ocr/Detector.mm +0 -101
  763. package/ios/RnExecutorch/models/ocr/RecognitionHandler.h +0 -16
  764. package/ios/RnExecutorch/models/ocr/RecognitionHandler.mm +0 -135
  765. package/ios/RnExecutorch/models/ocr/Recognizer.h +0 -8
  766. package/ios/RnExecutorch/models/ocr/Recognizer.mm +0 -77
  767. package/ios/RnExecutorch/models/ocr/VerticalDetector.h +0 -10
  768. package/ios/RnExecutorch/models/ocr/VerticalDetector.mm +0 -118
  769. package/ios/RnExecutorch/models/ocr/utils/CTCLabelConverter.h +0 -16
  770. package/ios/RnExecutorch/models/ocr/utils/CTCLabelConverter.mm +0 -80
  771. package/ios/RnExecutorch/models/ocr/utils/Constants.h +0 -26
  772. package/ios/RnExecutorch/models/ocr/utils/DetectorUtils.h +0 -31
  773. package/ios/RnExecutorch/models/ocr/utils/DetectorUtils.mm +0 -754
  774. package/ios/RnExecutorch/models/ocr/utils/OCRUtils.h +0 -10
  775. package/ios/RnExecutorch/models/ocr/utils/OCRUtils.mm +0 -67
  776. package/ios/RnExecutorch/models/ocr/utils/RecognizerUtils.h +0 -35
  777. package/ios/RnExecutorch/models/ocr/utils/RecognizerUtils.mm +0 -331
  778. package/ios/RnExecutorch/models/stt/Moonshine.hpp +0 -13
  779. package/ios/RnExecutorch/models/stt/Moonshine.mm +0 -64
  780. package/ios/RnExecutorch/models/stt/MoonshineDecoder.hpp +0 -16
  781. package/ios/RnExecutorch/models/stt/MoonshineDecoder.mm +0 -24
  782. package/ios/RnExecutorch/models/stt/MoonshineEncoder.hpp +0 -15
  783. package/ios/RnExecutorch/models/stt/MoonshineEncoder.mm +0 -18
  784. package/ios/RnExecutorch/models/stt/SpeechToTextBaseModel.hpp +0 -26
  785. package/ios/RnExecutorch/models/stt/SpeechToTextBaseModel.mm +0 -19
  786. package/ios/RnExecutorch/models/stt/Whisper.hpp +0 -12
  787. package/ios/RnExecutorch/models/stt/Whisper.mm +0 -68
  788. package/ios/RnExecutorch/models/stt/WhisperDecoder.hpp +0 -16
  789. package/ios/RnExecutorch/models/stt/WhisperDecoder.mm +0 -22
  790. package/ios/RnExecutorch/models/stt/WhisperEncoder.hpp +0 -15
  791. package/ios/RnExecutorch/models/stt/WhisperEncoder.mm +0 -21
  792. package/ios/RnExecutorch/models/style_transfer/StyleTransferModel.h +0 -11
  793. package/ios/RnExecutorch/models/style_transfer/StyleTransferModel.mm +0 -50
  794. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsModel.h +0 -15
  795. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsModel.mm +0 -45
  796. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsUtils.h +0 -8
  797. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsUtils.mm +0 -49
  798. package/ios/RnExecutorch/utils/Constants.h +0 -8
  799. package/ios/RnExecutorch/utils/Conversions.h +0 -15
  800. package/ios/RnExecutorch/utils/ETError.h +0 -26
  801. package/ios/RnExecutorch/utils/ImageProcessor.h +0 -15
  802. package/ios/RnExecutorch/utils/ImageProcessor.mm +0 -147
  803. package/ios/RnExecutorch/utils/Numerical.h +0 -1
  804. package/ios/RnExecutorch/utils/Numerical.mm +0 -18
  805. package/ios/RnExecutorch/utils/ObjectDetectionUtils.hpp +0 -23
  806. package/ios/RnExecutorch/utils/SFFT.hpp +0 -13
  807. package/ios/RnExecutorch/utils/SFFT.mm +0 -71
  808. package/ios/RnExecutorch/utils/ScalarType.h +0 -14
  809. package/ios/RnExecutorch/utils/ScalarType.mm +0 -21
  810. package/lib/module/constants/sttDefaults.js +0 -72
  811. package/lib/module/constants/sttDefaults.js.map +0 -1
  812. package/lib/module/controllers/SpeechToTextController.js +0 -307
  813. package/lib/module/controllers/SpeechToTextController.js.map +0 -1
  814. package/lib/module/native/NativeClassification.js +0 -5
  815. package/lib/module/native/NativeClassification.js.map +0 -1
  816. package/lib/module/native/NativeETModule.js +0 -5
  817. package/lib/module/native/NativeETModule.js.map +0 -1
  818. package/lib/module/native/NativeImageSegmentation.js +0 -5
  819. package/lib/module/native/NativeImageSegmentation.js.map +0 -1
  820. package/lib/module/native/NativeLLM.js +0 -5
  821. package/lib/module/native/NativeLLM.js.map +0 -1
  822. package/lib/module/native/NativeOCR.js +0 -5
  823. package/lib/module/native/NativeOCR.js.map +0 -1
  824. package/lib/module/native/NativeObjectDetection.js +0 -5
  825. package/lib/module/native/NativeObjectDetection.js.map +0 -1
  826. package/lib/module/native/NativeSpeechToText.js +0 -5
  827. package/lib/module/native/NativeSpeechToText.js.map +0 -1
  828. package/lib/module/native/NativeStyleTransfer.js +0 -5
  829. package/lib/module/native/NativeStyleTransfer.js.map +0 -1
  830. package/lib/module/native/NativeTextEmbeddings.js +0 -5
  831. package/lib/module/native/NativeTextEmbeddings.js.map +0 -1
  832. package/lib/module/native/NativeTokenizer.js +0 -5
  833. package/lib/module/native/NativeTokenizer.js.map +0 -1
  834. package/lib/module/native/NativeVerticalOCR.js +0 -5
  835. package/lib/module/native/NativeVerticalOCR.js.map +0 -1
  836. package/lib/module/package.json +0 -1
  837. package/lib/module/utils/stt.js +0 -22
  838. package/lib/module/utils/stt.js.map +0 -1
  839. package/lib/typescript/constants/sttDefaults.d.ts +0 -28
  840. package/lib/typescript/constants/sttDefaults.d.ts.map +0 -1
  841. package/lib/typescript/controllers/SpeechToTextController.d.ts +0 -52
  842. package/lib/typescript/controllers/SpeechToTextController.d.ts.map +0 -1
  843. package/lib/typescript/native/NativeClassification.d.ts +0 -10
  844. package/lib/typescript/native/NativeClassification.d.ts.map +0 -1
  845. package/lib/typescript/native/NativeETModule.d.ts +0 -9
  846. package/lib/typescript/native/NativeETModule.d.ts.map +0 -1
  847. package/lib/typescript/native/NativeImageSegmentation.d.ts +0 -10
  848. package/lib/typescript/native/NativeImageSegmentation.d.ts.map +0 -1
  849. package/lib/typescript/native/NativeLLM.d.ts +0 -12
  850. package/lib/typescript/native/NativeLLM.d.ts.map +0 -1
  851. package/lib/typescript/native/NativeOCR.d.ts +0 -9
  852. package/lib/typescript/native/NativeOCR.d.ts.map +0 -1
  853. package/lib/typescript/native/NativeObjectDetection.d.ts +0 -9
  854. package/lib/typescript/native/NativeObjectDetection.d.ts.map +0 -1
  855. package/lib/typescript/native/NativeSpeechToText.d.ts +0 -12
  856. package/lib/typescript/native/NativeSpeechToText.d.ts.map +0 -1
  857. package/lib/typescript/native/NativeStyleTransfer.d.ts.map +0 -1
  858. package/lib/typescript/native/NativeTextEmbeddings.d.ts +0 -8
  859. package/lib/typescript/native/NativeTextEmbeddings.d.ts.map +0 -1
  860. package/lib/typescript/native/NativeTokenizer.d.ts +0 -12
  861. package/lib/typescript/native/NativeTokenizer.d.ts.map +0 -1
  862. package/lib/typescript/native/NativeVerticalOCR.d.ts +0 -9
  863. package/lib/typescript/native/NativeVerticalOCR.d.ts.map +0 -1
  864. package/lib/typescript/utils/stt.d.ts +0 -2
  865. package/lib/typescript/utils/stt.d.ts.map +0 -1
  866. package/src/constants/sttDefaults.ts +0 -86
  867. package/src/controllers/SpeechToTextController.ts +0 -458
  868. package/src/index.tsx +0 -47
  869. package/src/native/NativeClassification.ts +0 -9
  870. package/src/native/NativeETModule.ts +0 -14
  871. package/src/native/NativeImageSegmentation.ts +0 -14
  872. package/src/native/NativeLLM.ts +0 -14
  873. package/src/native/NativeOCR.ts +0 -16
  874. package/src/native/NativeObjectDetection.ts +0 -10
  875. package/src/native/NativeSpeechToText.ts +0 -17
  876. package/src/native/NativeStyleTransfer.ts +0 -10
  877. package/src/native/NativeTextEmbeddings.ts +0 -9
  878. package/src/native/NativeTokenizer.ts +0 -13
  879. package/src/native/NativeVerticalOCR.ts +0 -16
  880. package/src/utils/stt.ts +0 -28
  881. package/{ios → third-party/ios}/ExecutorchLib.xcframework/Info.plist +4 -4
@@ -0,0 +1,710 @@
1
+ #include "DetectorUtils.h"
2
+ #include <algorithm>
3
+ #include <limits>
4
+ #include <numeric>
5
+ #include <rnexecutorch/data_processing/Numerical.h>
6
+ #include <rnexecutorch/models/ocr/Constants.h>
7
+ #include <rnexecutorch/models/ocr/Types.h>
8
+ #include <unordered_set>
9
+
10
+ namespace rnexecutorch::models::ocr::utils {
11
+ std::array<cv::Point2f, 4>
12
+ cvPointsFromPoints(const std::array<types::Point, 4> &points) {
13
+ std::array<cv::Point2f, 4> cvPoints;
14
+ #pragma unroll
15
+ for (std::size_t i = 0; i < cvPoints.size(); ++i) {
16
+ cvPoints[i] = cv::Point2f(points[i].x, points[i].y);
17
+ }
18
+ return cvPoints;
19
+ }
20
+
21
+ std::array<types::Point, 4> pointsFromCvPoints(cv::Point2f cvPoints[4]) {
22
+ std::array<types::Point, 4> points;
23
+ #pragma unroll
24
+ for (std::size_t i = 0; i < points.size(); ++i) {
25
+ points[i] = {.x = cvPoints[i].x, .y = cvPoints[i].y};
26
+ }
27
+ return points;
28
+ }
29
+
30
+ std::pair<cv::Mat, cv::Mat> interleavedArrayToMats(std::span<const float> data,
31
+ cv::Size size) {
32
+ cv::Mat mat1 = cv::Mat(size, CV_32F);
33
+ cv::Mat mat2 = cv::Mat(size, CV_32F);
34
+
35
+ for (std::size_t i = 0; i < data.size(); i++) {
36
+ const float value = data[i];
37
+ const int32_t x = (i / 2) % size.width;
38
+ const int32_t y = (i / 2) / size.width;
39
+
40
+ if (i % 2 == 0) {
41
+ mat1.at<float>(y, x) = value;
42
+ } else {
43
+ mat2.at<float>(y, x) = value;
44
+ }
45
+ }
46
+ return {mat1, mat2};
47
+ }
48
+
49
+ // Create a segmentation map for the current component.
50
+ // Background is 0, (black), foreground is 255 (white)
51
+ cv::Mat createSegmentMap(const cv::Mat &mask, cv::Size mapSize,
52
+ const int32_t segmentColor = 255) {
53
+ cv::Mat segMap = cv::Mat::zeros(mapSize, CV_8U);
54
+ segMap.setTo(segmentColor, mask);
55
+ return segMap;
56
+ }
57
+
58
+ void morphologicalOperations(
59
+ const cv::Mat &segMap, const cv::Mat &stats, int32_t i, int32_t area,
60
+ int32_t imgW, int32_t imgH,
61
+ int32_t iterations = 1, // iterations number of times dilation is applied.
62
+ cv::Size anchor =
63
+ cv::Point(-1, -1) // anchor position of the anchor within the element;
64
+ // default means that the anchor is at the center.
65
+ ) {
66
+ const int32_t x = stats.at<int32_t>(i, cv::CC_STAT_LEFT);
67
+ const int32_t y = stats.at<int32_t>(i, cv::CC_STAT_TOP);
68
+ const int32_t w = stats.at<int32_t>(i, cv::CC_STAT_WIDTH);
69
+ const int32_t h = stats.at<int32_t>(i, cv::CC_STAT_HEIGHT);
70
+
71
+ // Dynamically calculate dilation radius to expand the bounding box slightly
72
+ constexpr int32_t evenMultiplyCoeff = 2; // ensure that dilationRadius is even
73
+ const int32_t dilationRadius = static_cast<int32_t>(
74
+ std::sqrt(static_cast<double>(area) / std::max(w, h)) *
75
+ evenMultiplyCoeff);
76
+ const int32_t sx = std::max(x - dilationRadius, 0);
77
+ const int32_t ex = std::min(x + w + dilationRadius, imgW);
78
+ const int32_t sy = std::max(y - dilationRadius, 0);
79
+ const int32_t ey = std::min(y + h + dilationRadius, imgH);
80
+
81
+ // Define a region of interest (ROI) and dilate it
82
+ cv::Rect roi(sx, sy, ex - sx, ey - sy);
83
+ // Morphological kernels require minimum size of 1x1 (no-op) plus dilation
84
+ // radius
85
+ const int32_t morphologicalKernelSize =
86
+ 1 + dilationRadius; // Ensures valid odd-sized kernel,
87
+ // notice the fact that dilationRadius is always even.
88
+ cv::Mat kernel = cv::getStructuringElement(
89
+ cv::MORPH_RECT,
90
+ cv::Size(morphologicalKernelSize, morphologicalKernelSize));
91
+ cv::Mat roiSegMap = segMap(roi);
92
+ cv::dilate(roiSegMap, roiSegMap, kernel, anchor, iterations);
93
+ }
94
+
95
+ types::DetectorBBox
96
+ extractMinAreaBBoxFromContour(const std::vector<cv::Point> contour) {
97
+ cv::RotatedRect minRect = cv::minAreaRect(contour);
98
+
99
+ std::array<cv::Point2f, 4> vertices;
100
+ minRect.points(vertices.data());
101
+
102
+ std::array<types::Point, 4> points = pointsFromCvPoints(vertices.data());
103
+ return {.bbox = points, .angle = minRect.angle};
104
+ }
105
+
106
+ void getBoxFromContour(cv::Mat &segMap,
107
+ std::vector<types::DetectorBBox> &detectedBoxes) {
108
+ std::vector<std::vector<cv::Point>> contours;
109
+ cv::findContours(segMap, contours, cv::RETR_EXTERNAL,
110
+ cv::CHAIN_APPROX_SIMPLE);
111
+ if (!contours.empty()) {
112
+ detectedBoxes.emplace_back(extractMinAreaBBoxFromContour(contours[0]));
113
+ }
114
+ }
115
+
116
+ // Function for processing single component. It is shared between the
117
+ // VerticalOCR and standard OCR. param isVertical specifies which OCR uses it.
118
+ // param lowTextThreshold is used only by standard OCR.
119
+ void processComponent(const cv::Mat &textMap, const cv::Mat &labels,
120
+ const cv::Mat &stats, int32_t i, int32_t imgW,
121
+ int32_t imgH,
122
+ std::vector<types::DetectorBBox> &detectedBoxes,
123
+ bool isVertical, int32_t minimalAreaThreshold,
124
+ int32_t dilationIter, float lowTextThreshold = 0.0) {
125
+ const int32_t area = stats.at<int32_t>(i, cv::CC_STAT_AREA);
126
+ // Skip small components as they are likely to be just noise
127
+ if (area < minimalAreaThreshold) {
128
+ return;
129
+ }
130
+
131
+ cv::Mat mask = (labels == i);
132
+
133
+ if (!isVertical) {
134
+ // Skip components with low values, as they are likely to be just noise
135
+ double maxVal;
136
+ cv::minMaxLoc(textMap, nullptr, &maxVal, nullptr, nullptr, mask);
137
+ if (maxVal < lowTextThreshold) {
138
+ return;
139
+ }
140
+ }
141
+
142
+ cv::Mat segMap = createSegmentMap(mask, textMap.size());
143
+
144
+ // Perform morphological operations on the segment map.
145
+ // mostly includes the dilation of the region of interest
146
+ // to esnure the box captures the whole area
147
+ morphologicalOperations(segMap, stats, i, area, imgW, imgH, dilationIter);
148
+
149
+ // Find the minimum area rotated rectangle around the contour
150
+ // and add it to the box list.
151
+ getBoxFromContour(segMap, detectedBoxes);
152
+ }
153
+
154
+ std::vector<types::DetectorBBox>
155
+ getDetBoxesFromTextMap(cv::Mat &textMap, cv::Mat &affinityMap,
156
+ float textThreshold, float linkThreshold,
157
+ float lowTextThreshold) {
158
+ // Ensure input mats are of the correct type for processing
159
+ CV_Assert(textMap.type() == CV_32F && affinityMap.type() == CV_32F);
160
+
161
+ const int32_t imgH = textMap.rows;
162
+ const int32_t imgW = textMap.cols;
163
+ cv::Mat textScore;
164
+ cv::Mat affinityScore;
165
+
166
+ // 1. Based on maps and threshold values create binary masks
167
+ constexpr double maxValBinaryMask = 1.0;
168
+ cv::threshold(textMap, textScore, textThreshold, maxValBinaryMask,
169
+ cv::THRESH_BINARY);
170
+ cv::threshold(affinityMap, affinityScore, linkThreshold, maxValBinaryMask,
171
+ cv::THRESH_BINARY);
172
+
173
+ // 2. Merge two maps into one using logical OR
174
+ cv::Mat textScoreComb = textScore + affinityScore;
175
+ constexpr double threshVal = 0.0;
176
+ cv::threshold(textScoreComb, textScoreComb, threshVal, maxValBinaryMask,
177
+ cv::THRESH_BINARY);
178
+ cv::Mat binaryMat;
179
+ textScoreComb.convertTo(binaryMat, CV_8UC1);
180
+
181
+ // 3. Find connected components to identify each box
182
+ cv::Mat labels, stats, centroids;
183
+ constexpr int32_t connectivityType = 4;
184
+ const int32_t nLabels = cv::connectedComponentsWithStats(
185
+ binaryMat, labels, stats, centroids, connectivityType);
186
+
187
+ std::vector<types::DetectorBBox> detectedBoxes;
188
+ detectedBoxes.reserve(nLabels); // Pre-allocate memory
189
+
190
+ // number of dilation iterations performed in some
191
+ // morphological operations on a component later on.
192
+ constexpr int32_t dilationIter = 1;
193
+ // minimal accepted area of component
194
+ constexpr int32_t minimalAreaThreshold = 10;
195
+
196
+ // 4. Process each component; omit component 0 as it is background
197
+ for (int32_t i = 1; i < nLabels; i++) {
198
+ processComponent(textMap, labels, stats, i, imgW, imgH, detectedBoxes,
199
+ false, minimalAreaThreshold, dilationIter,
200
+ lowTextThreshold);
201
+ }
202
+
203
+ return detectedBoxes;
204
+ }
205
+
206
+ std::vector<types::DetectorBBox>
207
+ getDetBoxesFromTextMapVertical(cv::Mat &textMap, cv::Mat &affinityMap,
208
+ float textThreshold, float linkThreshold,
209
+ bool independentCharacters) {
210
+ // Ensure input mats are of the correct type for processing
211
+ CV_Assert(textMap.type() == CV_32F && affinityMap.type() == CV_32F);
212
+
213
+ const int32_t imgH = textMap.rows;
214
+ const int32_t imgW = textMap.cols;
215
+ cv::Mat textScore;
216
+ cv::Mat affinityScore;
217
+
218
+ // 1. Threshold text and affinity maps to create binary masks
219
+ constexpr double maxValBinaryMask = 1.0;
220
+ cv::threshold(textMap, textScore, textThreshold, maxValBinaryMask,
221
+ cv::THRESH_BINARY);
222
+ cv::threshold(affinityMap, affinityScore, linkThreshold, maxValBinaryMask,
223
+ cv::THRESH_BINARY);
224
+
225
+ // Prepare values for morphological operations
226
+ const auto kSize = cv::Size(3, 3); // size of the structuring element
227
+ cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, kSize);
228
+
229
+ // iterations number of times erosion is applied.
230
+ constexpr int32_t erosionIterations = 1;
231
+
232
+ // iterations number of times dilation is applied.
233
+ int32_t dilationIterations;
234
+ const auto anchor =
235
+ cv::Point(-1, -1); // anchor position of the anchor within the element;
236
+ // default value (-1, -1)
237
+ // means that the anchor is at the element center
238
+
239
+ // 2. Combine maps based on whether we are detecting words or single
240
+ // characters
241
+ // For single characters, subtract affinity to separate adjacent chars,
242
+ // otherwise add affinity to link characters together
243
+ cv::Mat textScoreComb = independentCharacters ? textScore - affinityScore
244
+ : textScore + affinityScore;
245
+ // Clamp values to be >= 0
246
+ cv::threshold(textScoreComb, textScoreComb, 0.0, 1.0, cv::THRESH_TOZERO);
247
+ // Clamp values to be <= 1
248
+ cv::threshold(textScoreComb, textScoreComb, 1.0, 1.0, cv::THRESH_TRUNC);
249
+
250
+ // Perform morphological operations to refine character regions
251
+ if (independentCharacters) {
252
+ dilationIterations = 4;
253
+ cv::erode(textScoreComb, textScoreComb, kernel, anchor, erosionIterations);
254
+ } else {
255
+ dilationIterations = 2;
256
+ }
257
+ cv::dilate(textScoreComb, textScoreComb, kernel, anchor, dilationIterations);
258
+
259
+ // 3. Find connected components to identify each character/word
260
+ cv::Mat binaryMat;
261
+ textScoreComb.convertTo(binaryMat, CV_8UC1);
262
+
263
+ cv::Mat labels, stats, centroids;
264
+ constexpr int32_t connectivityType = 4;
265
+ const int32_t nLabels = cv::connectedComponentsWithStats(
266
+ binaryMat, labels, stats, centroids, connectivityType);
267
+
268
+ std::vector<types::DetectorBBox> detectedBoxes;
269
+ detectedBoxes.reserve(nLabels);
270
+
271
+ // number of dilation iterations performed in some
272
+ // morphological operations on a component later on.
273
+ constexpr int32_t dilationIter = 2;
274
+ // minimal accepted area of component
275
+ constexpr int32_t minimalAreaThreshold = 20;
276
+
277
+ // 4. Process each component; omit component 0 as it is background
278
+ for (int32_t i = 1; i < nLabels; ++i) {
279
+ const int32_t width = stats.at<int32_t>(i, cv::CC_STAT_WIDTH);
280
+ const int32_t height = stats.at<int32_t>(i, cv::CC_STAT_HEIGHT);
281
+ // For vertical text (not single chars), height should be greater than width
282
+ if (!independentCharacters && height < width) {
283
+ continue;
284
+ }
285
+ processComponent(textMap, labels, stats, i, imgW, imgH, detectedBoxes, true,
286
+ minimalAreaThreshold, dilationIter);
287
+ }
288
+
289
+ return detectedBoxes;
290
+ }
291
+
292
+ float calculateRestoreRatio(int32_t currentSize, int32_t desiredSize) {
293
+ return desiredSize / static_cast<float>(currentSize);
294
+ }
295
+
296
+ void restoreBboxRatio(std::vector<types::DetectorBBox> &boxes,
297
+ float restoreRatio) {
298
+ for (auto &box : boxes) {
299
+ for (auto &point : box.bbox) {
300
+ point.x *= restoreRatio;
301
+ point.y *= restoreRatio;
302
+ }
303
+ }
304
+ }
305
+
306
+ float distanceFromPoint(const types::Point &p1, const types::Point &p2) {
307
+ const float xDist = p2.x - p1.x;
308
+ const float yDist = p2.y - p1.y;
309
+ return std::hypot(xDist, yDist);
310
+ }
311
+
312
+ float normalizeAngle(float angle) {
313
+ return (angle > 45.0f) ? (angle - 90.0f) : angle;
314
+ }
315
+
316
+ types::Point midpointBetweenPoint(const types::Point &p1,
317
+ const types::Point &p2) {
318
+ return {.x = std::midpoint(p1.x, p2.x), .y = std::midpoint(p1.y, p2.y)};
319
+ }
320
+
321
+ types::Point centerOfBox(const std::array<types::Point, 4> &box) {
322
+ return midpointBetweenPoint(box[0], box[2]);
323
+ }
324
+
325
+ // function for both; finding maximal side length and minimal side length
326
+ template <typename Compare>
327
+ float findExtremeSideLength(const std::array<types::Point, 4> &points,
328
+ Compare comp) {
329
+ float extremeLength = distanceFromPoint(points[0], points[1]);
330
+
331
+ #pragma unroll
332
+ for (std::size_t i = 1; i < points.size(); i++) {
333
+ const auto &currentPoint = points[i];
334
+ const auto &nextPoint = points[(i + 1) % points.size()];
335
+ const float sideLength = distanceFromPoint(currentPoint, nextPoint);
336
+
337
+ if (comp(sideLength, extremeLength)) {
338
+ extremeLength = sideLength;
339
+ }
340
+ }
341
+
342
+ return extremeLength;
343
+ }
344
+
345
+ float minSideLength(const std::array<types::Point, 4> &points) {
346
+ return findExtremeSideLength(points, std::less<float>{});
347
+ }
348
+
349
+ float maxSideLength(const std::array<types::Point, 4> &points) {
350
+ return findExtremeSideLength(points, std::greater<float>{});
351
+ }
352
+
353
+ /**
354
+ * This method calculates the distances between each sequential pair of points
355
+ * in a presumed quadrilateral, identifies the two shortest sides, and fits a
356
+ * linear model to the midpoints of these sides. It also evaluates whether the
357
+ * resulting line should be considered vertical based on a predefined threshold
358
+ * for the x-coordinate differences.
359
+ *
360
+ * If the line is vertical it is fitted as a function of x = my + c, otherwise
361
+ * as y = mx + c.
362
+ *
363
+ * @return A tuple with 2 floats and a bool, where:
364
+ * - the first float represents the slope (m) of the line.
365
+ * - the second float represents the line's intercept (c) with y-axis.
366
+ * - a bool indicating whether the line is
367
+ * considered vertical.
368
+ */
369
+ std::tuple<float, float, bool>
370
+ fitLineToShortestSides(const std::array<types::Point, 4> &points) {
371
+ std::array<std::pair<float, float>, 4> sides;
372
+ std::array<types::Point, 4> midpoints;
373
+ #pragma unroll
374
+ for (std::size_t i = 0; i < midpoints.size(); i++) {
375
+ const auto p1 = points[i];
376
+ const auto p2 = points[(i + 1) % midpoints.size()];
377
+
378
+ const float sideLength = distanceFromPoint(p1, p2);
379
+ sides[i] = std::make_pair(sideLength, i);
380
+ midpoints[i] = midpointBetweenPoint(p1, p2);
381
+ }
382
+
383
+ // Sort the sides by length ascending
384
+ std::ranges::sort(sides);
385
+
386
+ const types::Point midpoint1 = midpoints[sides[0].second];
387
+ const types::Point midpoint2 = midpoints[sides[1].second];
388
+ const float dx = std::fabs(midpoint2.x - midpoint1.x);
389
+
390
+ float m, c;
391
+ bool isVertical;
392
+
393
+ std::array<cv::Point2f, 2> cvMidPoints = {
394
+ cv::Point2f(midpoint1.x, midpoint1.y),
395
+ cv::Point2f(midpoint2.x, midpoint2.y)};
396
+ cv::Vec4f line;
397
+ // parameteres for fitLine calculation:
398
+ constexpr int32_t numericalParameter =
399
+ 0; // important only for some types of distances, O means an optimal value
400
+ // is chosen
401
+ constexpr double accuracy =
402
+ 0.01; // sufficient accuracy. Value proposed by OPENCV
403
+
404
+ isVertical = dx < constants::kVerticalLineThreshold;
405
+ if (isVertical) {
406
+ for (auto &pt : cvMidPoints) {
407
+ std::swap(pt.x, pt.y);
408
+ }
409
+ }
410
+ cv::fitLine(cvMidPoints, line, cv::DIST_L2, numericalParameter, accuracy,
411
+ accuracy);
412
+ m = line[1] / line[0];
413
+ c = line[3] - m * line[2];
414
+ return {m, c, isVertical};
415
+ }
416
+
417
+ std::array<types::Point, 4> rotateBox(const std::array<types::Point, 4> &box,
418
+ float angle) {
419
+ const types::Point center = centerOfBox(box);
420
+
421
+ const float radians = angle * M_PI / 180.0f;
422
+
423
+ std::array<types::Point, 4> rotatedPoints;
424
+ for (std::size_t i = 0; i < box.size(); ++i) {
425
+ const types::Point &point = box[i];
426
+ const float translatedX = point.x - center.x;
427
+ const float translatedY = point.y - center.y;
428
+
429
+ const float rotatedX =
430
+ translatedX * std::cos(radians) - translatedY * std::sin(radians);
431
+ const float rotatedY =
432
+ translatedX * std::sin(radians) + translatedY * std::cos(radians);
433
+
434
+ rotatedPoints[i] = {.x = rotatedX + center.x, .y = rotatedY + center.y};
435
+ }
436
+
437
+ return rotatedPoints;
438
+ }
439
+
440
+ float calculateMinimalDistanceBetweenBox(
441
+ const std::array<types::Point, 4> &box1,
442
+ const std::array<types::Point, 4> &box2) {
443
+ float minDistance = std::numeric_limits<float>::max();
444
+ for (const types::Point &corner1 : box1) {
445
+ for (const types::Point &corner2 : box2) {
446
+ const float distance = distanceFromPoint(corner1, corner2);
447
+ minDistance = std::min(distance, minDistance);
448
+ }
449
+ }
450
+ return minDistance;
451
+ }
452
+
453
+ /**
454
+ * Orders a set of 4 points in a clockwise direction starting with the top-left
455
+ * point.
456
+ *
457
+ * Process:
458
+ * 1. It iterates through each Point.
459
+ * 2. For each point, it calculates the sum (x + y) and difference (y - x) of
460
+ * the coordinates.
461
+ * 3. Points are classified into:
462
+ * - Top-left: Minimum sum.
463
+ * - Bottom-right: Maximum sum.
464
+ * - Top-right: Minimum difference.
465
+ * - Bottom-left: Maximum difference.
466
+ * 4. The points are ordered starting from the top-left in a clockwise manner:
467
+ * top-left, top-right, bottom-right, bottom-left.
468
+ */
469
+ std::array<types::Point, 4>
470
+ orderPointsClockwise(const std::array<types::Point, 4> &points) {
471
+ types::Point topLeft, topRight, bottomRight, bottomLeft;
472
+ float minSum = std::numeric_limits<float>::max();
473
+ float maxSum = std::numeric_limits<float>::lowest();
474
+ float minDiff = std::numeric_limits<float>::max();
475
+ float maxDiff = std::numeric_limits<float>::lowest();
476
+
477
+ for (const auto &pt : points) {
478
+ const float sum = pt.x + pt.y;
479
+ const float diff = pt.y - pt.x;
480
+
481
+ if (sum < minSum) {
482
+ minSum = sum;
483
+ topLeft = pt;
484
+ }
485
+ if (sum > maxSum) {
486
+ maxSum = sum;
487
+ bottomRight = pt;
488
+ }
489
+ if (diff < minDiff) {
490
+ minDiff = diff;
491
+ topRight = pt;
492
+ }
493
+ if (diff > maxDiff) {
494
+ maxDiff = diff;
495
+ bottomLeft = pt;
496
+ }
497
+ }
498
+
499
+ return {topLeft, topRight, bottomRight, bottomLeft};
500
+ }
501
+
502
+ std::array<types::Point, 4>
503
+ mergeRotatedBoxes(std::array<types::Point, 4> &box1,
504
+ std::array<types::Point, 4> &box2) {
505
+ box1 = orderPointsClockwise(box1);
506
+ box2 = orderPointsClockwise(box2);
507
+
508
+ auto points1 = cvPointsFromPoints(box1);
509
+ auto points2 = cvPointsFromPoints(box2);
510
+
511
+ std::array<cv::Point2f, points1.size() + points2.size()> allPoints;
512
+ std::copy(points1.begin(), points1.end(), allPoints.begin());
513
+ std::copy(points2.begin(), points2.end(), allPoints.begin() + points1.size());
514
+
515
+ std::vector<int32_t> hullIndices;
516
+ cv::convexHull(allPoints, hullIndices, false);
517
+
518
+ std::vector<cv::Point2f> hullPoints;
519
+ for (int32_t idx : hullIndices) {
520
+ hullPoints.push_back(allPoints[idx]);
521
+ }
522
+
523
+ cv::RotatedRect minAreaRect = cv::minAreaRect(hullPoints);
524
+
525
+ std::array<cv::Point2f, 4> rectPoints;
526
+ minAreaRect.points(rectPoints.data());
527
+
528
+ return pointsFromCvPoints(rectPoints.data());
529
+ }
530
+
531
+ /**
532
+ * This method assesses each box from a provided vector, checks its center
533
+ * against the center of a "current box", and evaluates its alignment with a
534
+ * specified line equation. The function specifically searches for the box whose
535
+ * center is closest to the current box that has not been ignored, and fits
536
+ * within a defined distance from the line.
537
+ *
538
+ * @param boxes A vector of DetectorBBoxes
539
+ * @param ignoredIdxs A set of indices of boxes to ignore in the evaluation.
540
+ * @param currentBox Array of points encapsulating representing the current box
541
+ * to compare against.
542
+ * @param isVertical A boolean indicating if the line to compare distance to is
543
+ * vertical.
544
+ * @param m The slope (gradient) of the line against which the box's alignment
545
+ * is checked.
546
+ * @param c The y-intercept of the line equation y = mx + c.
547
+ * @param centerThreshold A multiplier to determine the threshold for the
548
+ * distance between the box's center and the line.
549
+ *
550
+ * @return A an optional pair containing:
551
+ * - the index of the found box in the original vector.
552
+ * - the length of the shortest side of the found box.
553
+ * If no suitable box is found the optional is null.
554
+ */
555
+ std::optional<std::pair<std::size_t, float>>
556
+ findClosestBox(const std::vector<types::DetectorBBox> &boxes,
557
+ const std::unordered_set<std::size_t> &ignoredIdxs,
558
+ const std::array<types::Point, 4> &currentBox, bool isVertical,
559
+ float m, float c, float centerThreshold) {
560
+ float smallestDistance = std::numeric_limits<float>::max();
561
+ ssize_t idx = -1;
562
+ float boxHeight = 0.0f;
563
+ const types::Point centerOfCurrentBox = centerOfBox(currentBox);
564
+
565
+ for (std::size_t i = 0; i < boxes.size(); i++) {
566
+ if (ignoredIdxs.contains(i)) {
567
+ continue;
568
+ }
569
+ std::array<types::Point, 4> bbox = boxes[i].bbox;
570
+ const types::Point centerOfProcessedBox = centerOfBox(bbox);
571
+ const float distanceBetweenCenters =
572
+ distanceFromPoint(centerOfCurrentBox, centerOfProcessedBox);
573
+
574
+ if (distanceBetweenCenters >= smallestDistance) {
575
+ continue;
576
+ }
577
+
578
+ boxHeight = minSideLength(bbox);
579
+
580
+ const float lineDistance =
581
+ isVertical ? std::fabs(centerOfProcessedBox.x -
582
+ (m * centerOfProcessedBox.y + c))
583
+ : std::fabs(centerOfProcessedBox.y -
584
+ (m * centerOfProcessedBox.x + c));
585
+
586
+ if (lineDistance < boxHeight * centerThreshold) {
587
+ idx = i;
588
+ smallestDistance = distanceBetweenCenters;
589
+ }
590
+ }
591
+
592
+ return idx != -1 ? std::optional(std::make_pair(idx, boxHeight))
593
+ : std::nullopt;
594
+ }
595
+
596
+ /**
597
+ * Filters out boxes that are smaller than the specified thresholds.
598
+ * A box is kept only if:
599
+ * - Its shorter side is **greater than** `minSideThreshold`, **and**
600
+ * - Its longer side is **greater than** `maxSideThreshold`.
601
+ * Otherwise, the box is excluded from the result.
602
+ */
603
+ std::vector<types::DetectorBBox>
604
+ removeSmallBoxesFromArray(const std::vector<types::DetectorBBox> &boxes,
605
+ float minSideThreshold, float maxSideThreshold) {
606
+ std::vector<types::DetectorBBox> filteredBoxes;
607
+
608
+ for (const auto &box : boxes) {
609
+ const float maxSide = maxSideLength(box.bbox);
610
+ const float minSide = minSideLength(box.bbox);
611
+ if (minSide > minSideThreshold && maxSide > maxSideThreshold) {
612
+ filteredBoxes.push_back(box);
613
+ }
614
+ }
615
+
616
+ return filteredBoxes;
617
+ }
618
+
619
+ static float minimumYFromBox(const std::array<types::Point, 4> &box) {
620
+ return std::ranges::min_element(
621
+ box, [](types::Point a, types::Point b) { return a.y < b.y; })
622
+ ->y;
623
+ }
624
+
625
+ std::vector<types::DetectorBBox>
626
+ groupTextBoxes(std::vector<types::DetectorBBox> &boxes, float centerThreshold,
627
+ float distanceThreshold, float heightThreshold,
628
+ int32_t minSideThreshold, int32_t maxSideThreshold,
629
+ int32_t maxWidth) {
630
+ // Sort boxes descending by maximum side length
631
+ std::ranges::sort(boxes, [](const types::DetectorBBox &lhs,
632
+ const types::DetectorBBox &rhs) {
633
+ return maxSideLength(lhs.bbox) > maxSideLength(rhs.bbox);
634
+ });
635
+
636
+ std::vector<types::DetectorBBox> mergedVec;
637
+ float lineAngle;
638
+ std::unordered_set<std::size_t> ignoredIdxs;
639
+ while (!boxes.empty()) {
640
+ auto currentBox = boxes[0];
641
+ float normalizedAngle = normalizeAngle(currentBox.angle);
642
+ boxes.erase(boxes.begin());
643
+ ignoredIdxs.clear();
644
+
645
+ while (true) {
646
+ // Find all aligned boxes and merge them until max_size is reached or no
647
+ // more boxes can be merged
648
+ auto [slope, intercept, isVertical] =
649
+ fitLineToShortestSides(currentBox.bbox);
650
+
651
+ lineAngle = std::atan(slope) * 180.0f / M_PI;
652
+ if (isVertical) {
653
+ lineAngle = -90.0f;
654
+ }
655
+ auto closestBoxInfo =
656
+ findClosestBox(boxes, ignoredIdxs, currentBox.bbox, isVertical, slope,
657
+ intercept, centerThreshold);
658
+ if (!closestBoxInfo.has_value()) {
659
+ break;
660
+ }
661
+ const auto [candidateIdx, candidateHeight] = closestBoxInfo.value();
662
+ types::DetectorBBox candidateBox = boxes[candidateIdx];
663
+
664
+ if ((numerical::isClose(candidateBox.angle, 90.0f) && !isVertical) ||
665
+ (numerical::isClose(candidateBox.angle, 0.0f) && isVertical)) {
666
+ candidateBox.bbox = rotateBox(candidateBox.bbox, normalizedAngle);
667
+ }
668
+
669
+ const float minDistance = calculateMinimalDistanceBetweenBox(
670
+ candidateBox.bbox, currentBox.bbox);
671
+ const float mergedHeight = minSideLength(currentBox.bbox);
672
+ if (minDistance < distanceThreshold * candidateHeight &&
673
+ std::fabs(mergedHeight - candidateHeight) <
674
+ candidateHeight * heightThreshold) {
675
+ currentBox.bbox = mergeRotatedBoxes(currentBox.bbox, candidateBox.bbox);
676
+ boxes.erase(boxes.begin() + candidateIdx);
677
+ ignoredIdxs.clear();
678
+ if (maxSideLength(currentBox.bbox) > maxWidth) {
679
+ break;
680
+ }
681
+ } else {
682
+ ignoredIdxs.insert(candidateIdx);
683
+ }
684
+ }
685
+ mergedVec.emplace_back(currentBox.bbox, lineAngle);
686
+ }
687
+
688
+ // Remove small boxes and sort by vertical
689
+ mergedVec =
690
+ removeSmallBoxesFromArray(mergedVec, minSideThreshold, maxSideThreshold);
691
+
692
+ std::ranges::sort(mergedVec, [](const auto &obj1, const auto &obj2) {
693
+ const auto &coords1 = obj1.bbox;
694
+ const auto &coords2 = obj2.bbox;
695
+ const float minY1 = minimumYFromBox(coords1);
696
+ const float minY2 = minimumYFromBox(coords2);
697
+ return minY1 < minY2;
698
+ });
699
+
700
+ std::vector<types::DetectorBBox> orderedSortedBoxes;
701
+ orderedSortedBoxes.reserve(mergedVec.size());
702
+ for (types::DetectorBBox bbox : mergedVec) {
703
+ bbox.bbox = orderPointsClockwise(bbox.bbox);
704
+ orderedSortedBoxes.push_back(std::move(bbox));
705
+ }
706
+
707
+ return orderedSortedBoxes;
708
+ }
709
+
710
+ } // namespace rnexecutorch::models::ocr::utils