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.
- package/README.md +77 -71
- package/android/CMakeLists.txt +29 -0
- package/android/build.gradle +76 -13
- package/android/libs/classes.jar +0 -0
- package/android/src/main/cpp/CMakeLists.txt +109 -0
- package/android/src/main/cpp/ETInstallerModule.cpp +76 -0
- package/android/src/main/cpp/ETInstallerModule.h +43 -0
- package/android/src/main/java/com/swmansion/rnexecutorch/ETInstaller.kt +66 -0
- package/android/src/main/java/com/swmansion/rnexecutorch/RnExecutorchPackage.kt +6 -124
- package/common/ada/ada.cpp +17406 -0
- package/common/ada/ada.h +10274 -0
- package/common/pfft/pfft.c +2205 -0
- package/common/pfft/pfft.h +185 -0
- package/common/rnexecutorch/Log.h +489 -0
- package/common/rnexecutorch/RnExecutorchInstaller.cpp +113 -0
- package/common/rnexecutorch/RnExecutorchInstaller.h +87 -0
- package/common/rnexecutorch/TokenizerModule.cpp +52 -0
- package/common/rnexecutorch/TokenizerModule.h +29 -0
- package/common/rnexecutorch/data_processing/FFT.cpp +21 -0
- package/common/rnexecutorch/data_processing/FFT.h +23 -0
- package/common/rnexecutorch/data_processing/FileUtils.h +30 -0
- package/common/rnexecutorch/data_processing/ImageProcessing.cpp +240 -0
- package/common/rnexecutorch/data_processing/ImageProcessing.h +55 -0
- package/common/rnexecutorch/data_processing/Numerical.cpp +111 -0
- package/common/rnexecutorch/data_processing/Numerical.h +77 -0
- package/common/rnexecutorch/data_processing/base64.cpp +110 -0
- package/common/rnexecutorch/data_processing/base64.h +46 -0
- package/common/rnexecutorch/data_processing/dsp.cpp +19 -0
- package/common/rnexecutorch/data_processing/dsp.h +12 -0
- package/common/rnexecutorch/data_processing/gzip.cpp +47 -0
- package/common/rnexecutorch/data_processing/gzip.h +7 -0
- package/common/rnexecutorch/host_objects/JSTensorViewIn.h +12 -0
- package/common/rnexecutorch/host_objects/JSTensorViewOut.h +22 -0
- package/common/rnexecutorch/host_objects/JsiConversions.h +418 -0
- package/common/rnexecutorch/host_objects/ModelHostObject.h +313 -0
- package/common/rnexecutorch/jsi/JsiHostObject.cpp +108 -0
- package/common/rnexecutorch/jsi/JsiHostObject.h +87 -0
- package/common/rnexecutorch/jsi/OwningArrayBuffer.h +57 -0
- package/common/rnexecutorch/jsi/Promise.cpp +20 -0
- package/common/rnexecutorch/jsi/Promise.h +69 -0
- package/common/rnexecutorch/jsi/RuntimeAwareCache.h +58 -0
- package/common/rnexecutorch/jsi/RuntimeLifecycleMonitor.cpp +53 -0
- package/common/rnexecutorch/jsi/RuntimeLifecycleMonitor.h +35 -0
- package/common/rnexecutorch/metaprogramming/ConstructorHelpers.h +133 -0
- package/common/rnexecutorch/metaprogramming/FunctionHelpers.h +50 -0
- package/common/rnexecutorch/metaprogramming/TypeConcepts.h +37 -0
- package/common/rnexecutorch/models/BaseModel.cpp +183 -0
- package/common/rnexecutorch/models/BaseModel.h +61 -0
- package/common/rnexecutorch/models/classification/Classification.cpp +72 -0
- package/common/rnexecutorch/models/classification/Classification.h +31 -0
- package/{ios/RnExecutorch/models/classification/Constants.mm → common/rnexecutorch/models/classification/Constants.h} +7 -2
- package/common/rnexecutorch/models/embeddings/BaseEmbeddings.cpp +19 -0
- package/common/rnexecutorch/models/embeddings/BaseEmbeddings.h +17 -0
- package/common/rnexecutorch/models/embeddings/image/ImageEmbeddings.cpp +45 -0
- package/common/rnexecutorch/models/embeddings/image/ImageEmbeddings.h +28 -0
- package/common/rnexecutorch/models/embeddings/text/TextEmbeddings.cpp +60 -0
- package/common/rnexecutorch/models/embeddings/text/TextEmbeddings.h +31 -0
- package/{ios/RnExecutorch/models/image_segmentation/Constants.mm → common/rnexecutorch/models/image_segmentation/Constants.h} +7 -2
- package/common/rnexecutorch/models/image_segmentation/ImageSegmentation.cpp +168 -0
- package/common/rnexecutorch/models/image_segmentation/ImageSegmentation.h +50 -0
- package/common/rnexecutorch/models/llm/LLM.cpp +98 -0
- package/common/rnexecutorch/models/llm/LLM.h +38 -0
- package/{ios/RnExecutorch/utils/Constants.mm → common/rnexecutorch/models/object_detection/Constants.h} +9 -2
- package/common/rnexecutorch/models/object_detection/ObjectDetection.cpp +82 -0
- package/common/rnexecutorch/models/object_detection/ObjectDetection.h +37 -0
- package/common/rnexecutorch/models/object_detection/Types.h +13 -0
- package/{ios/RnExecutorch/utils/ObjectDetectionUtils.mm → common/rnexecutorch/models/object_detection/Utils.cpp} +17 -35
- package/common/rnexecutorch/models/object_detection/Utils.h +11 -0
- package/common/rnexecutorch/models/ocr/CTCLabelConverter.cpp +88 -0
- package/common/rnexecutorch/models/ocr/CTCLabelConverter.h +29 -0
- package/common/rnexecutorch/models/ocr/Constants.h +41 -0
- package/common/rnexecutorch/models/ocr/Detector.cpp +100 -0
- package/common/rnexecutorch/models/ocr/Detector.h +30 -0
- package/common/rnexecutorch/models/ocr/OCR.cpp +53 -0
- package/common/rnexecutorch/models/ocr/OCR.h +44 -0
- package/common/rnexecutorch/models/ocr/RecognitionHandler.cpp +108 -0
- package/common/rnexecutorch/models/ocr/RecognitionHandler.h +42 -0
- package/common/rnexecutorch/models/ocr/Recognizer.cpp +80 -0
- package/common/rnexecutorch/models/ocr/Recognizer.h +36 -0
- package/common/rnexecutorch/models/ocr/Types.h +35 -0
- package/common/rnexecutorch/models/ocr/utils/DetectorUtils.cpp +710 -0
- package/common/rnexecutorch/models/ocr/utils/DetectorUtils.h +81 -0
- package/common/rnexecutorch/models/ocr/utils/RecognitionHandlerUtils.cpp +159 -0
- package/common/rnexecutorch/models/ocr/utils/RecognitionHandlerUtils.h +72 -0
- package/common/rnexecutorch/models/ocr/utils/RecognizerUtils.cpp +204 -0
- package/common/rnexecutorch/models/ocr/utils/RecognizerUtils.h +71 -0
- package/common/rnexecutorch/models/speech_to_text/SpeechToText.cpp +125 -0
- package/common/rnexecutorch/models/speech_to_text/SpeechToText.h +57 -0
- package/common/rnexecutorch/models/speech_to_text/asr/ASR.cpp +303 -0
- package/common/rnexecutorch/models/speech_to_text/asr/ASR.h +61 -0
- package/common/rnexecutorch/models/speech_to_text/stream/HypothesisBuffer.cpp +82 -0
- package/common/rnexecutorch/models/speech_to_text/stream/HypothesisBuffer.h +25 -0
- package/common/rnexecutorch/models/speech_to_text/stream/OnlineASRProcessor.cpp +99 -0
- package/common/rnexecutorch/models/speech_to_text/stream/OnlineASRProcessor.h +33 -0
- package/common/rnexecutorch/models/speech_to_text/types/DecodingOptions.h +15 -0
- package/common/rnexecutorch/models/speech_to_text/types/GenerationResult.h +12 -0
- package/common/rnexecutorch/models/speech_to_text/types/ProcessResult.h +12 -0
- package/common/rnexecutorch/models/speech_to_text/types/Segment.h +14 -0
- package/common/rnexecutorch/models/speech_to_text/types/Word.h +13 -0
- package/common/rnexecutorch/models/style_transfer/StyleTransfer.cpp +55 -0
- package/common/rnexecutorch/models/style_transfer/StyleTransfer.h +35 -0
- package/common/rnexecutorch/models/text_to_image/Constants.h +9 -0
- package/common/rnexecutorch/models/text_to_image/Decoder.cpp +32 -0
- package/common/rnexecutorch/models/text_to_image/Decoder.h +24 -0
- package/common/rnexecutorch/models/text_to_image/Encoder.cpp +44 -0
- package/common/rnexecutorch/models/text_to_image/Encoder.h +32 -0
- package/common/rnexecutorch/models/text_to_image/Scheduler.cpp +152 -0
- package/common/rnexecutorch/models/text_to_image/Scheduler.h +41 -0
- package/common/rnexecutorch/models/text_to_image/TextToImage.cpp +141 -0
- package/common/rnexecutorch/models/text_to_image/TextToImage.h +64 -0
- package/common/rnexecutorch/models/text_to_image/UNet.cpp +38 -0
- package/common/rnexecutorch/models/text_to_image/UNet.h +28 -0
- package/common/rnexecutorch/models/vertical_ocr/VerticalDetector.cpp +93 -0
- package/common/rnexecutorch/models/vertical_ocr/VerticalDetector.h +49 -0
- package/common/rnexecutorch/models/vertical_ocr/VerticalOCR.cpp +180 -0
- package/common/rnexecutorch/models/vertical_ocr/VerticalOCR.h +85 -0
- package/common/rnexecutorch/models/voice_activity_detection/Constants.h +27 -0
- package/common/rnexecutorch/models/voice_activity_detection/Types.h +12 -0
- package/common/rnexecutorch/models/voice_activity_detection/Utils.cpp +15 -0
- package/common/rnexecutorch/models/voice_activity_detection/Utils.h +13 -0
- package/common/rnexecutorch/models/voice_activity_detection/VoiceActivityDetection.cpp +160 -0
- package/common/rnexecutorch/models/voice_activity_detection/VoiceActivityDetection.h +36 -0
- package/common/rnexecutorch/tests/CMakeLists.txt +30 -0
- package/common/rnexecutorch/tests/LogTest.cpp +530 -0
- package/common/rnexecutorch/tests/NumericalTest.cpp +110 -0
- package/common/rnexecutorch/tests/README.md +37 -0
- package/common/rnexecutorch/threads/GlobalThreadPool.h +84 -0
- package/common/rnexecutorch/threads/HighPerformanceThreadPool.h +364 -0
- package/common/rnexecutorch/threads/utils/ThreadUtils.h +29 -0
- package/common/runner/arange_util.cpp +44 -0
- package/common/runner/arange_util.h +37 -0
- package/common/runner/constants.h +28 -0
- package/common/runner/io_manager.h +240 -0
- package/common/runner/irunner.h +119 -0
- package/common/runner/kernel_includes.h +23 -0
- package/common/runner/runner.cpp +369 -0
- package/common/runner/runner.h +85 -0
- package/common/runner/sampler.cpp +201 -0
- package/common/runner/sampler.h +67 -0
- package/common/runner/stats.h +161 -0
- package/common/runner/text_decoder_runner.cpp +79 -0
- package/common/runner/text_decoder_runner.h +126 -0
- package/common/runner/text_prefiller.cpp +125 -0
- package/common/runner/text_prefiller.h +85 -0
- package/common/runner/text_token_generator.h +205 -0
- package/common/runner/util.h +153 -0
- package/ios/RnExecutorch/ETInstaller.h +8 -0
- package/ios/RnExecutorch/ETInstaller.mm +56 -0
- package/ios/RnExecutorch.xcodeproj/project.pbxproj +73 -23
- package/lib/module/Error.js +3 -0
- package/lib/module/Error.js.map +1 -1
- package/lib/module/common/Logger.js +23 -0
- package/lib/module/common/Logger.js.map +1 -0
- package/lib/module/constants/directories.js +1 -1
- package/lib/module/constants/directories.js.map +1 -1
- package/lib/module/constants/llmDefaults.js +8 -0
- package/lib/module/constants/llmDefaults.js.map +1 -1
- package/lib/module/constants/modelUrls.js +356 -84
- package/lib/module/constants/modelUrls.js.map +1 -1
- package/lib/module/constants/ocr/models.js +181 -286
- package/lib/module/constants/ocr/models.js.map +1 -1
- package/lib/module/constants/ocr/symbols.js +66 -65
- package/lib/module/constants/ocr/symbols.js.map +1 -1
- package/lib/module/controllers/LLMController.js +53 -23
- package/lib/module/controllers/LLMController.js.map +1 -1
- package/lib/module/controllers/OCRController.js +17 -10
- package/lib/module/controllers/OCRController.js.map +1 -1
- package/lib/module/controllers/VerticalOCRController.js +17 -10
- package/lib/module/controllers/VerticalOCRController.js.map +1 -1
- package/lib/module/hooks/computer_vision/useClassification.js +4 -4
- package/lib/module/hooks/computer_vision/useClassification.js.map +1 -1
- package/lib/module/hooks/computer_vision/useImageEmbeddings.js +13 -0
- package/lib/module/hooks/computer_vision/useImageEmbeddings.js.map +1 -0
- package/lib/module/hooks/computer_vision/useImageSegmentation.js +2 -2
- package/lib/module/hooks/computer_vision/useImageSegmentation.js.map +1 -1
- package/lib/module/hooks/computer_vision/useOCR.js +16 -17
- package/lib/module/hooks/computer_vision/useOCR.js.map +1 -1
- package/lib/module/hooks/computer_vision/useObjectDetection.js +3 -3
- package/lib/module/hooks/computer_vision/useObjectDetection.js.map +1 -1
- package/lib/module/hooks/computer_vision/useStyleTransfer.js +3 -3
- package/lib/module/hooks/computer_vision/useStyleTransfer.js.map +1 -1
- package/lib/module/hooks/computer_vision/useTextToImage.js +57 -0
- package/lib/module/hooks/computer_vision/useTextToImage.js.map +1 -0
- package/lib/module/hooks/computer_vision/useVerticalOCR.js +18 -19
- package/lib/module/hooks/computer_vision/useVerticalOCR.js.map +1 -1
- package/lib/module/hooks/general/useExecutorchModule.js +1 -1
- package/lib/module/hooks/general/useExecutorchModule.js.map +1 -1
- package/lib/module/hooks/natural_language_processing/useLLM.js +30 -29
- package/lib/module/hooks/natural_language_processing/useLLM.js.map +1 -1
- package/lib/module/hooks/natural_language_processing/useSpeechToText.js +72 -33
- package/lib/module/hooks/natural_language_processing/useSpeechToText.js.map +1 -1
- package/lib/module/hooks/natural_language_processing/useTextEmbeddings.js +2 -3
- package/lib/module/hooks/natural_language_processing/useTextEmbeddings.js.map +1 -1
- package/lib/module/hooks/natural_language_processing/useTokenizer.js +19 -18
- package/lib/module/hooks/natural_language_processing/useTokenizer.js.map +1 -1
- package/lib/module/hooks/natural_language_processing/useVAD.js +13 -0
- package/lib/module/hooks/natural_language_processing/useVAD.js.map +1 -0
- package/lib/module/hooks/useModule.js +13 -9
- package/lib/module/hooks/useModule.js.map +1 -1
- package/lib/module/index.js +21 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/modules/BaseModule.js +9 -14
- package/lib/module/modules/BaseModule.js.map +1 -1
- package/lib/module/modules/computer_vision/ClassificationModule.js +11 -6
- package/lib/module/modules/computer_vision/ClassificationModule.js.map +1 -1
- package/lib/module/modules/computer_vision/ImageEmbeddingsModule.js +19 -0
- package/lib/module/modules/computer_vision/ImageEmbeddingsModule.js.map +1 -0
- package/lib/module/modules/computer_vision/ImageSegmentationModule.js +20 -18
- package/lib/module/modules/computer_vision/ImageSegmentationModule.js.map +1 -1
- package/lib/module/modules/computer_vision/OCRModule.js +13 -10
- package/lib/module/modules/computer_vision/OCRModule.js.map +1 -1
- package/lib/module/modules/computer_vision/ObjectDetectionModule.js +11 -6
- package/lib/module/modules/computer_vision/ObjectDetectionModule.js.map +1 -1
- package/lib/module/modules/computer_vision/StyleTransferModule.js +11 -6
- package/lib/module/modules/computer_vision/StyleTransferModule.js.map +1 -1
- package/lib/module/modules/computer_vision/TextToImageModule.js +48 -0
- package/lib/module/modules/computer_vision/TextToImageModule.js.map +1 -0
- package/lib/module/modules/computer_vision/VerticalOCRModule.js +15 -10
- package/lib/module/modules/computer_vision/VerticalOCRModule.js.map +1 -1
- package/lib/module/modules/general/ExecutorchModule.js +8 -34
- package/lib/module/modules/general/ExecutorchModule.js.map +1 -1
- package/lib/module/modules/natural_language_processing/LLMModule.js +25 -24
- package/lib/module/modules/natural_language_processing/LLMModule.js.map +1 -1
- package/lib/module/modules/natural_language_processing/SpeechToTextModule.js +109 -27
- package/lib/module/modules/natural_language_processing/SpeechToTextModule.js.map +1 -1
- package/lib/module/modules/natural_language_processing/TextEmbeddingsModule.js +13 -6
- package/lib/module/modules/natural_language_processing/TextEmbeddingsModule.js.map +1 -1
- package/lib/module/modules/natural_language_processing/TokenizerModule.js +20 -14
- package/lib/module/modules/natural_language_processing/TokenizerModule.js.map +1 -1
- package/lib/module/modules/natural_language_processing/VADModule.js +19 -0
- package/lib/module/modules/natural_language_processing/VADModule.js.map +1 -0
- package/lib/module/native/NativeETInstaller.js +5 -0
- package/lib/module/native/NativeETInstaller.js.map +1 -0
- package/lib/module/native/RnExecutorchModules.js +2 -12
- package/lib/module/native/RnExecutorchModules.js.map +1 -1
- package/lib/module/types/common.js +25 -8
- package/lib/module/types/common.js.map +1 -1
- package/lib/module/types/llm.js.map +1 -1
- package/lib/module/types/stt.js +1 -79
- package/lib/module/types/stt.js.map +1 -1
- package/lib/module/types/vad.js +2 -0
- package/lib/module/types/vad.js.map +1 -0
- package/lib/module/utils/ResourceFetcher.js +275 -114
- package/lib/module/utils/ResourceFetcher.js.map +1 -1
- package/lib/module/utils/ResourceFetcherUtils.js +155 -0
- package/lib/module/utils/ResourceFetcherUtils.js.map +1 -0
- package/lib/module/utils/llm.js +41 -1
- package/lib/module/utils/llm.js.map +1 -1
- package/lib/typescript/Error.d.ts +3 -0
- package/lib/typescript/Error.d.ts.map +1 -1
- package/lib/typescript/common/Logger.d.ts +9 -0
- package/lib/typescript/common/Logger.d.ts.map +1 -0
- package/lib/typescript/constants/llmDefaults.d.ts +1 -0
- package/lib/typescript/constants/llmDefaults.d.ts.map +1 -1
- package/lib/typescript/constants/modelUrls.d.ts +263 -79
- package/lib/typescript/constants/modelUrls.d.ts.map +1 -1
- package/lib/typescript/constants/ocr/models.d.ts +882 -284
- package/lib/typescript/constants/ocr/models.d.ts.map +1 -1
- package/lib/typescript/constants/ocr/symbols.d.ts +1 -1
- package/lib/typescript/constants/ocr/symbols.d.ts.map +1 -1
- package/lib/typescript/controllers/LLMController.d.ts +8 -7
- package/lib/typescript/controllers/LLMController.d.ts.map +1 -1
- package/lib/typescript/controllers/OCRController.d.ts +5 -6
- package/lib/typescript/controllers/OCRController.d.ts.map +1 -1
- package/lib/typescript/controllers/VerticalOCRController.d.ts +5 -6
- package/lib/typescript/controllers/VerticalOCRController.d.ts.map +1 -1
- package/lib/typescript/hooks/computer_vision/useClassification.d.ts +8 -6
- package/lib/typescript/hooks/computer_vision/useClassification.d.ts.map +1 -1
- package/lib/typescript/hooks/computer_vision/useImageEmbeddings.d.ts +16 -0
- package/lib/typescript/hooks/computer_vision/useImageEmbeddings.d.ts.map +1 -0
- package/lib/typescript/hooks/computer_vision/useImageSegmentation.d.ts +5 -3
- package/lib/typescript/hooks/computer_vision/useImageSegmentation.d.ts.map +1 -1
- package/lib/typescript/hooks/computer_vision/useOCR.d.ts +5 -5
- package/lib/typescript/hooks/computer_vision/useOCR.d.ts.map +1 -1
- package/lib/typescript/hooks/computer_vision/useObjectDetection.d.ts +5 -3
- package/lib/typescript/hooks/computer_vision/useObjectDetection.d.ts.map +1 -1
- package/lib/typescript/hooks/computer_vision/useStyleTransfer.d.ts +5 -3
- package/lib/typescript/hooks/computer_vision/useStyleTransfer.d.ts.map +1 -1
- package/lib/typescript/hooks/computer_vision/useTextToImage.d.ts +22 -0
- package/lib/typescript/hooks/computer_vision/useTextToImage.d.ts.map +1 -0
- package/lib/typescript/hooks/computer_vision/useVerticalOCR.d.ts +4 -6
- package/lib/typescript/hooks/computer_vision/useVerticalOCR.d.ts.map +1 -1
- package/lib/typescript/hooks/general/useExecutorchModule.d.ts +1 -1
- package/lib/typescript/hooks/natural_language_processing/useLLM.d.ts +6 -4
- package/lib/typescript/hooks/natural_language_processing/useLLM.d.ts.map +1 -1
- package/lib/typescript/hooks/natural_language_processing/useSpeechToText.d.ts +15 -22
- package/lib/typescript/hooks/natural_language_processing/useSpeechToText.d.ts.map +1 -1
- package/lib/typescript/hooks/natural_language_processing/useTextEmbeddings.d.ts +9 -5
- package/lib/typescript/hooks/natural_language_processing/useTextEmbeddings.d.ts.map +1 -1
- package/lib/typescript/hooks/natural_language_processing/useTokenizer.d.ts +6 -4
- package/lib/typescript/hooks/natural_language_processing/useTokenizer.d.ts.map +1 -1
- package/lib/typescript/hooks/natural_language_processing/useVAD.d.ts +16 -0
- package/lib/typescript/hooks/natural_language_processing/useVAD.d.ts.map +1 -0
- package/lib/typescript/hooks/useModule.d.ts +8 -5
- package/lib/typescript/hooks/useModule.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +26 -3
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/modules/BaseModule.d.ts +7 -6
- package/lib/typescript/modules/BaseModule.d.ts.map +1 -1
- package/lib/typescript/modules/computer_vision/ClassificationModule.d.ts +4 -4
- package/lib/typescript/modules/computer_vision/ClassificationModule.d.ts.map +1 -1
- package/lib/typescript/modules/computer_vision/ImageEmbeddingsModule.d.ts +9 -0
- package/lib/typescript/modules/computer_vision/ImageEmbeddingsModule.d.ts.map +1 -0
- package/lib/typescript/modules/computer_vision/ImageSegmentationModule.d.ts +7 -27
- package/lib/typescript/modules/computer_vision/ImageSegmentationModule.d.ts.map +1 -1
- package/lib/typescript/modules/computer_vision/OCRModule.d.ts +8 -7
- package/lib/typescript/modules/computer_vision/OCRModule.d.ts.map +1 -1
- package/lib/typescript/modules/computer_vision/ObjectDetectionModule.d.ts +5 -3
- package/lib/typescript/modules/computer_vision/ObjectDetectionModule.d.ts.map +1 -1
- package/lib/typescript/modules/computer_vision/StyleTransferModule.d.ts +4 -3
- package/lib/typescript/modules/computer_vision/StyleTransferModule.d.ts.map +1 -1
- package/lib/typescript/modules/computer_vision/TextToImageModule.d.ts +16 -0
- package/lib/typescript/modules/computer_vision/TextToImageModule.d.ts.map +1 -0
- package/lib/typescript/modules/computer_vision/VerticalOCRModule.d.ts +7 -8
- package/lib/typescript/modules/computer_vision/VerticalOCRModule.d.ts.map +1 -1
- package/lib/typescript/modules/general/ExecutorchModule.d.ts +4 -7
- package/lib/typescript/modules/general/ExecutorchModule.d.ts.map +1 -1
- package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts +19 -17
- package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts.map +1 -1
- package/lib/typescript/modules/natural_language_processing/SpeechToTextModule.d.ts +17 -13
- package/lib/typescript/modules/natural_language_processing/SpeechToTextModule.d.ts.map +1 -1
- package/lib/typescript/modules/natural_language_processing/TextEmbeddingsModule.d.ts +5 -3
- package/lib/typescript/modules/natural_language_processing/TextEmbeddingsModule.d.ts.map +1 -1
- package/lib/typescript/modules/natural_language_processing/TokenizerModule.d.ts +10 -9
- package/lib/typescript/modules/natural_language_processing/TokenizerModule.d.ts.map +1 -1
- package/lib/typescript/modules/natural_language_processing/VADModule.d.ts +10 -0
- package/lib/typescript/modules/natural_language_processing/VADModule.d.ts.map +1 -0
- package/lib/typescript/native/{NativeStyleTransfer.d.ts → NativeETInstaller.d.ts} +2 -3
- package/lib/typescript/native/NativeETInstaller.d.ts.map +1 -0
- package/lib/typescript/native/RnExecutorchModules.d.ts +3 -23
- package/lib/typescript/native/RnExecutorchModules.d.ts.map +1 -1
- package/lib/typescript/types/common.d.ts +30 -2
- package/lib/typescript/types/common.d.ts.map +1 -1
- package/lib/typescript/types/llm.d.ts +9 -1
- package/lib/typescript/types/llm.d.ts.map +1 -1
- package/lib/typescript/types/stt.d.ts +9 -88
- package/lib/typescript/types/stt.d.ts.map +1 -1
- package/lib/typescript/types/vad.d.ts +5 -0
- package/lib/typescript/types/vad.d.ts.map +1 -0
- package/lib/typescript/utils/ResourceFetcher.d.ts +47 -10
- package/lib/typescript/utils/ResourceFetcher.d.ts.map +1 -1
- package/lib/typescript/utils/ResourceFetcherUtils.d.ts +55 -0
- package/lib/typescript/utils/ResourceFetcherUtils.d.ts.map +1 -0
- package/lib/typescript/utils/llm.d.ts +4 -0
- package/lib/typescript/utils/llm.d.ts.map +1 -1
- package/package.json +32 -68
- package/react-native-executorch.podspec +62 -4
- package/src/Error.ts +3 -0
- package/src/common/Logger.ts +25 -0
- package/src/constants/directories.ts +1 -1
- package/src/constants/llmDefaults.ts +11 -0
- package/src/constants/modelUrls.ts +433 -168
- package/src/constants/ocr/models.ts +826 -395
- package/src/constants/ocr/symbols.ts +66 -65
- package/src/controllers/LLMController.ts +76 -36
- package/src/controllers/OCRController.ts +25 -16
- package/src/controllers/VerticalOCRController.ts +25 -15
- package/src/hooks/computer_vision/useClassification.ts +8 -9
- package/src/hooks/computer_vision/useImageEmbeddings.ts +15 -0
- package/src/hooks/computer_vision/useImageSegmentation.ts +3 -6
- package/src/hooks/computer_vision/useOCR.ts +32 -25
- package/src/hooks/computer_vision/useObjectDetection.ts +4 -7
- package/src/hooks/computer_vision/useStyleTransfer.ts +4 -4
- package/src/hooks/computer_vision/useTextToImage.ts +92 -0
- package/src/hooks/computer_vision/useVerticalOCR.ts +33 -31
- package/src/hooks/general/useExecutorchModule.ts +1 -1
- package/src/hooks/natural_language_processing/useLLM.ts +54 -31
- package/src/hooks/natural_language_processing/useSpeechToText.ts +96 -88
- package/src/hooks/natural_language_processing/useTextEmbeddings.ts +9 -9
- package/src/hooks/natural_language_processing/useTokenizer.ts +21 -21
- package/src/hooks/natural_language_processing/useVAD.ts +15 -0
- package/src/hooks/useModule.ts +23 -13
- package/src/index.ts +126 -0
- package/src/modules/BaseModule.ts +17 -22
- package/src/modules/computer_vision/ClassificationModule.ts +18 -9
- package/src/modules/computer_vision/ImageEmbeddingsModule.ts +26 -0
- package/src/modules/computer_vision/ImageSegmentationModule.ts +34 -26
- package/src/modules/computer_vision/OCRModule.ts +23 -15
- package/src/modules/computer_vision/ObjectDetectionModule.ts +22 -9
- package/src/modules/computer_vision/StyleTransferModule.ts +18 -9
- package/src/modules/computer_vision/TextToImageModule.ts +93 -0
- package/src/modules/computer_vision/VerticalOCRModule.ts +25 -21
- package/src/modules/general/ExecutorchModule.ts +16 -46
- package/src/modules/natural_language_processing/LLMModule.ts +41 -32
- package/src/modules/natural_language_processing/SpeechToTextModule.ts +164 -66
- package/src/modules/natural_language_processing/TextEmbeddingsModule.ts +25 -10
- package/src/modules/natural_language_processing/TokenizerModule.ts +27 -17
- package/src/modules/natural_language_processing/VADModule.ts +27 -0
- package/src/native/NativeETInstaller.ts +8 -0
- package/src/native/RnExecutorchModules.ts +4 -50
- package/src/types/common.ts +40 -12
- package/src/types/llm.ts +10 -0
- package/src/types/stt.ts +87 -90
- package/src/types/vad.ts +4 -0
- package/src/utils/ResourceFetcher.ts +342 -120
- package/src/utils/ResourceFetcherUtils.ts +184 -0
- package/src/utils/llm.ts +65 -1
- package/third-party/android/libs/cpuinfo/arm64-v8a/libcpuinfo.so +0 -0
- package/third-party/android/libs/executorch/arm64-v8a/libexecutorch.so +0 -0
- package/third-party/android/libs/executorch/x86_64/libexecutorch.so +0 -0
- package/third-party/android/libs/opencv/arm64-v8a/libopencv_core.a +0 -0
- package/third-party/android/libs/opencv/arm64-v8a/libopencv_features2d.a +0 -0
- package/third-party/android/libs/opencv/arm64-v8a/libopencv_highgui.a +0 -0
- package/third-party/android/libs/opencv/arm64-v8a/libopencv_imgproc.a +0 -0
- package/third-party/android/libs/opencv/arm64-v8a/libopencv_photo.a +0 -0
- package/third-party/android/libs/opencv/arm64-v8a/libopencv_video.a +0 -0
- package/third-party/android/libs/opencv/x86_64/libopencv_core.a +0 -0
- package/third-party/android/libs/opencv/x86_64/libopencv_features2d.a +0 -0
- package/third-party/android/libs/opencv/x86_64/libopencv_highgui.a +0 -0
- package/third-party/android/libs/opencv/x86_64/libopencv_imgproc.a +0 -0
- package/third-party/android/libs/opencv/x86_64/libopencv_photo.a +0 -0
- package/third-party/android/libs/opencv/x86_64/libopencv_video.a +0 -0
- package/third-party/android/libs/opencv-third-party/arm64-v8a/libkleidicv.a +0 -0
- package/third-party/android/libs/opencv-third-party/arm64-v8a/libkleidicv_hal.a +0 -0
- package/third-party/android/libs/opencv-third-party/arm64-v8a/libkleidicv_thread.a +0 -0
- package/third-party/android/libs/pthreadpool/arm64-v8a/libpthreadpool.so +0 -0
- package/third-party/android/libs/tokenizers-cpp/arm64-v8a/libsentencepiece.a +0 -0
- package/third-party/android/libs/tokenizers-cpp/arm64-v8a/libtokenizers_c.a +0 -0
- package/third-party/android/libs/tokenizers-cpp/arm64-v8a/libtokenizers_cpp.a +0 -0
- package/{ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/ExecutorchLib → third-party/android/libs/tokenizers-cpp/x86_64/libsentencepiece.a} +0 -0
- package/third-party/android/libs/tokenizers-cpp/x86_64/libtokenizers_c.a +0 -0
- package/third-party/android/libs/tokenizers-cpp/x86_64/libtokenizers_cpp.a +0 -0
- package/third-party/include/c10/macros/Export.h +1 -0
- package/third-party/include/c10/macros/Macros.h +1 -0
- package/third-party/include/c10/util/BFloat16-inl.h +1 -0
- package/third-party/include/c10/util/BFloat16-math.h +266 -0
- package/third-party/include/c10/util/BFloat16.h +1 -0
- package/third-party/include/c10/util/Half-inl.h +1 -0
- package/third-party/include/c10/util/Half.h +8 -0
- package/third-party/include/c10/util/TypeSafeSignMath.h +1 -0
- package/third-party/include/c10/util/bit_cast.h +1 -0
- package/third-party/include/c10/util/complex.h +72 -0
- package/third-party/include/c10/util/complex_math.h +399 -0
- package/third-party/include/c10/util/complex_utils.h +41 -0
- package/third-party/include/c10/util/floating_point_utils.h +1 -0
- package/third-party/include/c10/util/irange.h +107 -0
- package/third-party/include/c10/util/llvmMathExtras.h +866 -0
- package/third-party/include/c10/util/overflows.h +95 -0
- package/third-party/include/c10/util/safe_numerics.h +97 -0
- package/third-party/include/cpuinfo/cpuinfo.h +2305 -0
- package/third-party/include/executorch/ExecuTorch.h +13 -0
- package/third-party/include/executorch/ExecuTorchError.h +90 -0
- package/third-party/include/executorch/ExecuTorchLLM/ExecuTorchLLM.h +12 -0
- package/third-party/include/executorch/ExecuTorchLLM/ExecuTorchLLMConfig.h +56 -0
- package/third-party/include/executorch/ExecuTorchLLM/ExecuTorchLLMError.h +16 -0
- package/third-party/include/executorch/ExecuTorchLLM/ExecuTorchLLMMultimodalRunner.h +227 -0
- package/third-party/include/executorch/ExecuTorchLLM/ExecuTorchLLMTextRunner.h +97 -0
- package/third-party/include/executorch/ExecuTorchLLM/module.modulemap +4 -0
- package/third-party/include/executorch/ExecuTorchLog.h +77 -0
- package/third-party/include/executorch/ExecuTorchModule.h +563 -0
- package/third-party/include/executorch/ExecuTorchTensor.h +1421 -0
- package/third-party/include/executorch/ExecuTorchValue.h +265 -0
- package/third-party/include/executorch/extension/module/bundled_module.h +131 -0
- package/third-party/include/executorch/extension/module/module.h +649 -0
- package/third-party/include/executorch/extension/tensor/tensor.h +14 -0
- package/third-party/include/executorch/extension/tensor/tensor_accessor.h +190 -0
- package/third-party/include/executorch/extension/tensor/tensor_ptr.h +409 -0
- package/third-party/include/executorch/extension/tensor/tensor_ptr_maker.h +653 -0
- package/third-party/include/executorch/extension/threadpool/cpuinfo_utils.h +24 -0
- package/third-party/include/executorch/extension/threadpool/threadpool.h +95 -0
- package/third-party/include/executorch/runtime/backend/backend_execution_context.h +71 -0
- package/third-party/include/executorch/runtime/backend/backend_init_context.h +84 -0
- package/third-party/include/executorch/runtime/backend/backend_option_context.h +34 -0
- package/third-party/include/executorch/runtime/backend/interface.h +227 -0
- package/third-party/include/executorch/runtime/backend/options.h +206 -0
- package/third-party/include/executorch/runtime/core/array_ref.h +235 -0
- package/third-party/include/executorch/runtime/core/data_loader.h +136 -0
- package/third-party/include/executorch/runtime/core/defines.h +20 -0
- package/third-party/include/executorch/runtime/core/error.h +256 -0
- package/third-party/include/executorch/runtime/core/evalue.h +515 -0
- package/third-party/include/executorch/runtime/core/event_tracer.h +580 -0
- package/third-party/include/executorch/runtime/core/event_tracer_hooks.h +332 -0
- package/third-party/include/executorch/runtime/core/event_tracer_hooks_delegate.h +197 -0
- package/third-party/include/executorch/runtime/core/exec_aten/exec_aten.h +170 -0
- package/third-party/include/executorch/runtime/core/exec_aten/util/dim_order_util.h +264 -0
- package/third-party/include/executorch/runtime/core/exec_aten/util/scalar_type_util.h +1313 -0
- package/third-party/include/executorch/runtime/core/exec_aten/util/tensor_dimension_limit.h +21 -0
- package/third-party/include/executorch/runtime/core/exec_aten/util/tensor_shape_to_c_string.h +69 -0
- package/third-party/include/executorch/runtime/core/exec_aten/util/tensor_util.h +1251 -0
- package/third-party/include/executorch/runtime/core/freeable_buffer.h +107 -0
- package/third-party/include/executorch/runtime/core/function_ref.h +100 -0
- package/third-party/include/executorch/runtime/core/hierarchical_allocator.h +107 -0
- package/third-party/include/executorch/runtime/core/memory_allocator.h +208 -0
- package/third-party/include/executorch/runtime/core/named_data_map.h +76 -0
- package/third-party/include/executorch/runtime/core/portable_type/bfloat16.h +27 -0
- package/third-party/include/executorch/runtime/core/portable_type/bfloat16_math.h +14 -0
- package/third-party/include/executorch/runtime/core/portable_type/bits_types.h +83 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/macros/Export.h +1 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/macros/Macros.h +1 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/BFloat16-inl.h +1 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/BFloat16-math.h +266 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/BFloat16.h +1 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/Half-inl.h +1 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/Half.h +8 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/TypeSafeSignMath.h +1 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/bit_cast.h +1 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/complex.h +72 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/complex_math.h +399 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/complex_utils.h +41 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/floating_point_utils.h +1 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/irange.h +107 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/llvmMathExtras.h +866 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/overflows.h +95 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/safe_numerics.h +97 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/macros/Export.h +154 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/macros/Macros.h +553 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/BFloat16.h +477 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/Half.h +781 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/TypeSafeSignMath.h +141 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/bit_cast.h +49 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/complex.h +593 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/floating_point_utils.h +38 -0
- package/third-party/include/executorch/runtime/core/portable_type/complex.h +21 -0
- package/third-party/include/executorch/runtime/core/portable_type/device.h +70 -0
- package/third-party/include/executorch/runtime/core/portable_type/half.h +27 -0
- package/third-party/include/executorch/runtime/core/portable_type/optional.h +36 -0
- package/third-party/include/executorch/runtime/core/portable_type/qint_types.h +83 -0
- package/third-party/include/executorch/runtime/core/portable_type/scalar.h +110 -0
- package/third-party/include/executorch/runtime/core/portable_type/scalar_type.h +154 -0
- package/third-party/include/executorch/runtime/core/portable_type/string_view.h +29 -0
- package/third-party/include/executorch/runtime/core/portable_type/tensor.h +142 -0
- package/third-party/include/executorch/runtime/core/portable_type/tensor_impl.h +281 -0
- package/third-party/include/executorch/runtime/core/portable_type/tensor_options.h +60 -0
- package/third-party/include/executorch/runtime/core/result.h +258 -0
- package/third-party/include/executorch/runtime/core/span.h +97 -0
- package/third-party/include/executorch/runtime/core/tag.h +90 -0
- package/third-party/include/executorch/runtime/core/tensor_layout.h +79 -0
- package/third-party/include/executorch/runtime/core/tensor_shape_dynamism.h +39 -0
- package/third-party/include/executorch/runtime/executor/memory_manager.h +113 -0
- package/third-party/include/executorch/runtime/executor/merged_data_map.h +142 -0
- package/third-party/include/executorch/runtime/executor/method.h +412 -0
- package/third-party/include/executorch/runtime/executor/method_meta.h +298 -0
- package/third-party/include/executorch/runtime/executor/program.h +309 -0
- package/third-party/include/executorch/runtime/executor/pte_data_map.h +145 -0
- package/third-party/include/executorch/runtime/executor/tensor_parser.h +157 -0
- package/third-party/include/executorch/runtime/kernel/kernel_runtime_context.h +122 -0
- package/third-party/include/executorch/runtime/kernel/operator_registry.h +280 -0
- package/third-party/include/executorch/runtime/platform/abort.h +36 -0
- package/third-party/include/executorch/runtime/platform/assert.h +119 -0
- package/third-party/include/executorch/runtime/platform/clock.h +43 -0
- package/third-party/include/executorch/runtime/platform/compat_unistd.h +75 -0
- package/third-party/include/executorch/runtime/platform/compiler.h +201 -0
- package/third-party/include/executorch/runtime/platform/log.h +177 -0
- package/third-party/include/executorch/runtime/platform/platform.h +259 -0
- package/third-party/include/executorch/runtime/platform/profiler.h +292 -0
- package/third-party/include/executorch/runtime/platform/runtime.h +35 -0
- package/third-party/include/executorch/runtime/platform/system.h +49 -0
- package/third-party/include/executorch/runtime/platform/types.h +24 -0
- package/third-party/include/executorch/schema/extended_header.h +85 -0
- package/third-party/include/headeronly/macros/Export.h +88 -0
- package/third-party/include/opencv2/core/affine.hpp +676 -0
- package/third-party/include/opencv2/core/async.hpp +107 -0
- package/third-party/include/opencv2/core/base.hpp +735 -0
- package/third-party/include/opencv2/core/bindings_utils.hpp +279 -0
- package/third-party/include/opencv2/core/bufferpool.hpp +39 -0
- package/third-party/include/opencv2/core/check.hpp +231 -0
- package/third-party/include/opencv2/core/core.hpp +55 -0
- package/third-party/include/opencv2/core/core_c.h +3261 -0
- package/third-party/include/opencv2/core/cv_cpu_dispatch.h +404 -0
- package/third-party/include/opencv2/core/cv_cpu_helper.h +856 -0
- package/third-party/include/opencv2/core/cvdef.h +1003 -0
- package/third-party/include/opencv2/core/cvstd.hpp +196 -0
- package/third-party/include/opencv2/core/cvstd.inl.hpp +188 -0
- package/third-party/include/opencv2/core/cvstd_wrapper.hpp +187 -0
- package/third-party/include/opencv2/core/detail/async_promise.hpp +73 -0
- package/third-party/include/opencv2/core/detail/dispatch_helper.impl.hpp +48 -0
- package/third-party/include/opencv2/core/detail/exception_ptr.hpp +24 -0
- package/third-party/include/opencv2/core/dualquaternion.hpp +1054 -0
- package/third-party/include/opencv2/core/dualquaternion.inl.hpp +464 -0
- package/third-party/include/opencv2/core/eigen.hpp +405 -0
- package/third-party/include/opencv2/core/fast_math.hpp +433 -0
- package/third-party/include/opencv2/core/hal/hal.hpp +451 -0
- package/third-party/include/opencv2/core/hal/interface.h +191 -0
- package/third-party/include/opencv2/core/hal/intrin.hpp +1222 -0
- package/third-party/include/opencv2/core/hal/intrin_avx.hpp +3378 -0
- package/third-party/include/opencv2/core/hal/intrin_avx512.hpp +3688 -0
- package/third-party/include/opencv2/core/hal/intrin_cpp.hpp +3446 -0
- package/third-party/include/opencv2/core/hal/intrin_forward.hpp +195 -0
- package/third-party/include/opencv2/core/hal/intrin_lasx.hpp +3243 -0
- package/third-party/include/opencv2/core/hal/intrin_lsx.hpp +2671 -0
- package/third-party/include/opencv2/core/hal/intrin_math.hpp +772 -0
- package/third-party/include/opencv2/core/hal/intrin_msa.hpp +1973 -0
- package/third-party/include/opencv2/core/hal/intrin_neon.hpp +2710 -0
- package/third-party/include/opencv2/core/hal/intrin_rvv071.hpp +3452 -0
- package/third-party/include/opencv2/core/hal/intrin_rvv_scalable.hpp +2559 -0
- package/third-party/include/opencv2/core/hal/intrin_sse.hpp +3528 -0
- package/third-party/include/opencv2/core/hal/intrin_sse_em.hpp +175 -0
- package/third-party/include/opencv2/core/hal/intrin_vsx.hpp +1756 -0
- package/third-party/include/opencv2/core/hal/intrin_wasm.hpp +2911 -0
- package/third-party/include/opencv2/core/hal/msa_macros.h +2079 -0
- package/third-party/include/opencv2/core/hal/simd_utils.impl.hpp +313 -0
- package/third-party/include/opencv2/core/mat.hpp +3842 -0
- package/third-party/include/opencv2/core/mat.inl.hpp +2753 -0
- package/third-party/include/opencv2/core/matx.hpp +603 -0
- package/third-party/include/opencv2/core/matx.inl.hpp +1132 -0
- package/third-party/include/opencv2/core/neon_utils.hpp +127 -0
- package/third-party/include/opencv2/core/operations.hpp +610 -0
- package/third-party/include/opencv2/core/optim.hpp +362 -0
- package/third-party/include/opencv2/core/parallel/backend/parallel_for.openmp.hpp +66 -0
- package/third-party/include/opencv2/core/parallel/backend/parallel_for.tbb.hpp +148 -0
- package/third-party/include/opencv2/core/parallel/parallel_backend.hpp +108 -0
- package/third-party/include/opencv2/core/persistence.hpp +1321 -0
- package/third-party/include/opencv2/core/quaternion.hpp +1889 -0
- package/third-party/include/opencv2/core/quaternion.inl.hpp +907 -0
- package/third-party/include/opencv2/core/saturate.hpp +347 -0
- package/third-party/include/opencv2/core/simd_intrinsics.hpp +90 -0
- package/third-party/include/opencv2/core/softfloat.hpp +657 -0
- package/third-party/include/opencv2/core/sse_utils.hpp +861 -0
- package/third-party/include/opencv2/core/traits.hpp +417 -0
- package/third-party/include/opencv2/core/types.hpp +2368 -0
- package/third-party/include/opencv2/core/types_c.h +2064 -0
- package/third-party/include/opencv2/core/utility.hpp +1296 -0
- package/third-party/include/opencv2/core/utils/allocator_stats.hpp +31 -0
- package/third-party/include/opencv2/core/utils/allocator_stats.impl.hpp +111 -0
- package/third-party/include/opencv2/core/utils/filesystem.hpp +91 -0
- package/third-party/include/opencv2/core/utils/fp_control_utils.hpp +70 -0
- package/third-party/include/opencv2/core/utils/instrumentation.hpp +127 -0
- package/third-party/include/opencv2/core/utils/logger.defines.hpp +50 -0
- package/third-party/include/opencv2/core/utils/logger.hpp +258 -0
- package/third-party/include/opencv2/core/utils/logtag.hpp +27 -0
- package/third-party/include/opencv2/core/utils/tls.hpp +230 -0
- package/third-party/include/opencv2/core/utils/trace.hpp +281 -0
- package/third-party/include/opencv2/core/version.hpp +29 -0
- package/third-party/include/opencv2/core/vsx_utils.hpp +1115 -0
- package/third-party/include/opencv2/core.hpp +3699 -0
- package/third-party/include/opencv2/cvconfig.h +155 -0
- package/third-party/include/opencv2/dnn/dnn.hpp +51 -0
- package/third-party/include/opencv2/dnn.hpp +17 -0
- package/third-party/include/opencv2/features2d/features2d.hpp +55 -0
- package/third-party/include/opencv2/features2d/hal/interface.h +32 -0
- package/third-party/include/opencv2/features2d.hpp +1756 -0
- package/third-party/include/opencv2/highgui/highgui.hpp +113 -0
- package/third-party/include/opencv2/highgui.hpp +17 -0
- package/third-party/include/opencv2/imgproc/bindings.hpp +34 -0
- package/third-party/include/opencv2/imgproc/detail/gcgraph.hpp +355 -0
- package/third-party/include/opencv2/imgproc/detail/legacy.hpp +35 -0
- package/third-party/include/opencv2/imgproc/hal/hal.hpp +246 -0
- package/third-party/include/opencv2/imgproc/hal/interface.h +52 -0
- package/third-party/include/opencv2/imgproc/imgproc.hpp +55 -0
- package/third-party/include/opencv2/imgproc/imgproc_c.h +1261 -0
- package/third-party/include/opencv2/imgproc/segmentation.hpp +168 -0
- package/third-party/include/opencv2/imgproc/types_c.h +632 -0
- package/third-party/include/opencv2/imgproc.hpp +5956 -0
- package/third-party/include/opencv2/opencv.hpp +102 -0
- package/third-party/include/opencv2/opencv_modules.hpp +19 -0
- package/third-party/include/opencv2/photo/legacy/constants_c.h +10 -0
- package/third-party/include/opencv2/photo/photo.hpp +55 -0
- package/third-party/include/opencv2/photo.hpp +975 -0
- package/third-party/include/opencv2/video/background_segm.hpp +341 -0
- package/third-party/include/opencv2/video/detail/tracking.detail.hpp +435 -0
- package/third-party/include/opencv2/video/legacy/constants_c.h +15 -0
- package/third-party/include/opencv2/video/tracking.hpp +1014 -0
- package/third-party/include/opencv2/video/video.hpp +55 -0
- package/third-party/include/opencv2/video.hpp +65 -0
- package/third-party/include/pthreadpool/pthreadpool.h +2236 -0
- package/third-party/include/tokenizers-cpp/tokenizers_c.h +61 -0
- package/third-party/include/tokenizers-cpp/tokenizers_cpp.h +118 -0
- package/third-party/include/torch/headeronly/macros/Export.h +154 -0
- package/third-party/include/torch/headeronly/macros/Macros.h +553 -0
- package/third-party/include/torch/headeronly/util/BFloat16.h +477 -0
- package/third-party/include/torch/headeronly/util/Half.h +781 -0
- package/third-party/include/torch/headeronly/util/TypeSafeSignMath.h +141 -0
- package/third-party/include/torch/headeronly/util/bit_cast.h +49 -0
- package/third-party/include/torch/headeronly/util/complex.h +593 -0
- package/third-party/include/torch/headeronly/util/floating_point_utils.h +38 -0
- package/third-party/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/ExecutorchLib +0 -0
- package/{ios → third-party/ios}/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Info.plist +0 -0
- package/third-party/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/ExecutorchLib +0 -0
- package/{ios → third-party/ios}/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Info.plist +0 -0
- package/third-party/ios/libs/cpuinfo/libcpuinfo.a +0 -0
- package/third-party/ios/libs/pthreadpool/physical-arm64-release/libpthreadpool.a +0 -0
- package/third-party/ios/libs/pthreadpool/simulator-arm64-debug/libpthreadpool.a +0 -0
- package/third-party/ios/libs/tokenizers-cpp/physical-arm64-release/libsentencepiece.a +0 -0
- package/{ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/ExecutorchLib → third-party/ios/libs/tokenizers-cpp/physical-arm64-release/libtokenizers_c.a} +0 -0
- package/third-party/ios/libs/tokenizers-cpp/physical-arm64-release/libtokenizers_cpp.a +0 -0
- package/third-party/ios/libs/tokenizers-cpp/simulator-arm64-debug/libsentencepiece.a +0 -0
- package/third-party/ios/libs/tokenizers-cpp/simulator-arm64-debug/libtokenizers_c.a +0 -0
- package/third-party/ios/libs/tokenizers-cpp/simulator-arm64-debug/libtokenizers_cpp.a +0 -0
- package/LICENSE +0 -79
- package/android/src/main/java/com/swmansion/rnexecutorch/Classification.kt +0 -64
- package/android/src/main/java/com/swmansion/rnexecutorch/ETModule.kt +0 -90
- package/android/src/main/java/com/swmansion/rnexecutorch/ImageSegmentation.kt +0 -58
- package/android/src/main/java/com/swmansion/rnexecutorch/LLM.kt +0 -63
- package/android/src/main/java/com/swmansion/rnexecutorch/OCR.kt +0 -90
- package/android/src/main/java/com/swmansion/rnexecutorch/ObjectDetection.kt +0 -64
- package/android/src/main/java/com/swmansion/rnexecutorch/SpeechToText.kt +0 -91
- package/android/src/main/java/com/swmansion/rnexecutorch/StyleTransfer.kt +0 -54
- package/android/src/main/java/com/swmansion/rnexecutorch/TextEmbeddings.kt +0 -51
- package/android/src/main/java/com/swmansion/rnexecutorch/Tokenizer.kt +0 -86
- package/android/src/main/java/com/swmansion/rnexecutorch/VerticalOCR.kt +0 -179
- package/android/src/main/java/com/swmansion/rnexecutorch/models/BaseModel.kt +0 -54
- package/android/src/main/java/com/swmansion/rnexecutorch/models/TextEmbeddings/TextEmbeddingsModel.kt +0 -48
- package/android/src/main/java/com/swmansion/rnexecutorch/models/TextEmbeddings/TextEmbeddingsUtils.kt +0 -37
- package/android/src/main/java/com/swmansion/rnexecutorch/models/classification/ClassificationModel.kt +0 -46
- package/android/src/main/java/com/swmansion/rnexecutorch/models/classification/Constants.kt +0 -1005
- package/android/src/main/java/com/swmansion/rnexecutorch/models/imageSegmentation/Constants.kt +0 -26
- package/android/src/main/java/com/swmansion/rnexecutorch/models/imageSegmentation/ImageSegmentationModel.kt +0 -142
- package/android/src/main/java/com/swmansion/rnexecutorch/models/objectDetection/SSDLiteLargeModel.kt +0 -74
- package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/Detector.kt +0 -82
- package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/RecognitionHandler.kt +0 -117
- package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/Recognizer.kt +0 -51
- package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/VerticalDetector.kt +0 -89
- package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/CTCLabelConverter.kt +0 -58
- package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/Constants.kt +0 -31
- package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/DetectorUtils.kt +0 -608
- package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/RecognizerUtils.kt +0 -430
- package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/BaseS2TDecoder.kt +0 -39
- package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/BaseS2TModule.kt +0 -43
- package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/Moonshine.kt +0 -16
- package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/MoonshineDecoder.kt +0 -23
- package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/MoonshineEncoder.kt +0 -20
- package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/Whisper.kt +0 -16
- package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/WhisperDecoder.kt +0 -22
- package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/WhisperEncoder.kt +0 -29
- package/android/src/main/java/com/swmansion/rnexecutorch/models/styleTransfer/StyleTransferModel.kt +0 -43
- package/android/src/main/java/com/swmansion/rnexecutorch/utils/ArrayUtils.kt +0 -87
- package/android/src/main/java/com/swmansion/rnexecutorch/utils/ETError.kt +0 -34
- package/android/src/main/java/com/swmansion/rnexecutorch/utils/ImageProcessor.kt +0 -237
- package/android/src/main/java/com/swmansion/rnexecutorch/utils/Numerical.kt +0 -8
- package/android/src/main/java/com/swmansion/rnexecutorch/utils/ObjectDetectionUtils.kt +0 -201
- package/android/src/main/java/com/swmansion/rnexecutorch/utils/STFT.kt +0 -50
- package/android/src/main/java/com/swmansion/rnexecutorch/utils/TensorUtils.kt +0 -103
- package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Headers/ETModel.h +0 -27
- package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Headers/HuggingFaceTokenizer.h +0 -14
- package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Headers/LLaMARunner.h +0 -32
- package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Headers/ETModel.h +0 -27
- package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Headers/HuggingFaceTokenizer.h +0 -14
- package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Headers/LLaMARunner.h +0 -32
- package/ios/RnExecutorch/Classification.h +0 -5
- package/ios/RnExecutorch/Classification.mm +0 -54
- package/ios/RnExecutorch/ETModule.h +0 -5
- package/ios/RnExecutorch/ETModule.mm +0 -75
- package/ios/RnExecutorch/ImageSegmentation.h +0 -5
- package/ios/RnExecutorch/ImageSegmentation.mm +0 -60
- package/ios/RnExecutorch/LLM.h +0 -5
- package/ios/RnExecutorch/LLM.mm +0 -78
- package/ios/RnExecutorch/OCR.h +0 -5
- package/ios/RnExecutorch/OCR.mm +0 -96
- package/ios/RnExecutorch/ObjectDetection.h +0 -5
- package/ios/RnExecutorch/ObjectDetection.mm +0 -56
- package/ios/RnExecutorch/SpeechToText.h +0 -5
- package/ios/RnExecutorch/SpeechToText.mm +0 -125
- package/ios/RnExecutorch/StyleTransfer.h +0 -5
- package/ios/RnExecutorch/StyleTransfer.mm +0 -55
- package/ios/RnExecutorch/TextEmbeddings.h +0 -5
- package/ios/RnExecutorch/TextEmbeddings.mm +0 -62
- package/ios/RnExecutorch/Tokenizer.h +0 -5
- package/ios/RnExecutorch/Tokenizer.mm +0 -83
- package/ios/RnExecutorch/VerticalOCR.h +0 -5
- package/ios/RnExecutorch/VerticalOCR.mm +0 -183
- package/ios/RnExecutorch/models/BaseModel.h +0 -21
- package/ios/RnExecutorch/models/BaseModel.mm +0 -43
- package/ios/RnExecutorch/models/classification/ClassificationModel.h +0 -10
- package/ios/RnExecutorch/models/classification/ClassificationModel.mm +0 -53
- package/ios/RnExecutorch/models/classification/Constants.h +0 -3
- package/ios/RnExecutorch/models/image_segmentation/Constants.h +0 -4
- package/ios/RnExecutorch/models/image_segmentation/ImageSegmentationModel.h +0 -10
- package/ios/RnExecutorch/models/image_segmentation/ImageSegmentationModel.mm +0 -146
- package/ios/RnExecutorch/models/object_detection/SSDLiteLargeModel.hpp +0 -11
- package/ios/RnExecutorch/models/object_detection/SSDLiteLargeModel.mm +0 -64
- package/ios/RnExecutorch/models/ocr/Detector.h +0 -9
- package/ios/RnExecutorch/models/ocr/Detector.mm +0 -101
- package/ios/RnExecutorch/models/ocr/RecognitionHandler.h +0 -16
- package/ios/RnExecutorch/models/ocr/RecognitionHandler.mm +0 -135
- package/ios/RnExecutorch/models/ocr/Recognizer.h +0 -8
- package/ios/RnExecutorch/models/ocr/Recognizer.mm +0 -77
- package/ios/RnExecutorch/models/ocr/VerticalDetector.h +0 -10
- package/ios/RnExecutorch/models/ocr/VerticalDetector.mm +0 -118
- package/ios/RnExecutorch/models/ocr/utils/CTCLabelConverter.h +0 -16
- package/ios/RnExecutorch/models/ocr/utils/CTCLabelConverter.mm +0 -80
- package/ios/RnExecutorch/models/ocr/utils/Constants.h +0 -26
- package/ios/RnExecutorch/models/ocr/utils/DetectorUtils.h +0 -31
- package/ios/RnExecutorch/models/ocr/utils/DetectorUtils.mm +0 -754
- package/ios/RnExecutorch/models/ocr/utils/OCRUtils.h +0 -10
- package/ios/RnExecutorch/models/ocr/utils/OCRUtils.mm +0 -67
- package/ios/RnExecutorch/models/ocr/utils/RecognizerUtils.h +0 -35
- package/ios/RnExecutorch/models/ocr/utils/RecognizerUtils.mm +0 -331
- package/ios/RnExecutorch/models/stt/Moonshine.hpp +0 -13
- package/ios/RnExecutorch/models/stt/Moonshine.mm +0 -64
- package/ios/RnExecutorch/models/stt/MoonshineDecoder.hpp +0 -16
- package/ios/RnExecutorch/models/stt/MoonshineDecoder.mm +0 -24
- package/ios/RnExecutorch/models/stt/MoonshineEncoder.hpp +0 -15
- package/ios/RnExecutorch/models/stt/MoonshineEncoder.mm +0 -18
- package/ios/RnExecutorch/models/stt/SpeechToTextBaseModel.hpp +0 -26
- package/ios/RnExecutorch/models/stt/SpeechToTextBaseModel.mm +0 -19
- package/ios/RnExecutorch/models/stt/Whisper.hpp +0 -12
- package/ios/RnExecutorch/models/stt/Whisper.mm +0 -68
- package/ios/RnExecutorch/models/stt/WhisperDecoder.hpp +0 -16
- package/ios/RnExecutorch/models/stt/WhisperDecoder.mm +0 -22
- package/ios/RnExecutorch/models/stt/WhisperEncoder.hpp +0 -15
- package/ios/RnExecutorch/models/stt/WhisperEncoder.mm +0 -21
- package/ios/RnExecutorch/models/style_transfer/StyleTransferModel.h +0 -11
- package/ios/RnExecutorch/models/style_transfer/StyleTransferModel.mm +0 -50
- package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsModel.h +0 -15
- package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsModel.mm +0 -45
- package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsUtils.h +0 -8
- package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsUtils.mm +0 -49
- package/ios/RnExecutorch/utils/Constants.h +0 -8
- package/ios/RnExecutorch/utils/Conversions.h +0 -15
- package/ios/RnExecutorch/utils/ETError.h +0 -26
- package/ios/RnExecutorch/utils/ImageProcessor.h +0 -15
- package/ios/RnExecutorch/utils/ImageProcessor.mm +0 -147
- package/ios/RnExecutorch/utils/Numerical.h +0 -1
- package/ios/RnExecutorch/utils/Numerical.mm +0 -18
- package/ios/RnExecutorch/utils/ObjectDetectionUtils.hpp +0 -23
- package/ios/RnExecutorch/utils/SFFT.hpp +0 -13
- package/ios/RnExecutorch/utils/SFFT.mm +0 -71
- package/ios/RnExecutorch/utils/ScalarType.h +0 -14
- package/ios/RnExecutorch/utils/ScalarType.mm +0 -21
- package/lib/module/constants/sttDefaults.js +0 -72
- package/lib/module/constants/sttDefaults.js.map +0 -1
- package/lib/module/controllers/SpeechToTextController.js +0 -307
- package/lib/module/controllers/SpeechToTextController.js.map +0 -1
- package/lib/module/native/NativeClassification.js +0 -5
- package/lib/module/native/NativeClassification.js.map +0 -1
- package/lib/module/native/NativeETModule.js +0 -5
- package/lib/module/native/NativeETModule.js.map +0 -1
- package/lib/module/native/NativeImageSegmentation.js +0 -5
- package/lib/module/native/NativeImageSegmentation.js.map +0 -1
- package/lib/module/native/NativeLLM.js +0 -5
- package/lib/module/native/NativeLLM.js.map +0 -1
- package/lib/module/native/NativeOCR.js +0 -5
- package/lib/module/native/NativeOCR.js.map +0 -1
- package/lib/module/native/NativeObjectDetection.js +0 -5
- package/lib/module/native/NativeObjectDetection.js.map +0 -1
- package/lib/module/native/NativeSpeechToText.js +0 -5
- package/lib/module/native/NativeSpeechToText.js.map +0 -1
- package/lib/module/native/NativeStyleTransfer.js +0 -5
- package/lib/module/native/NativeStyleTransfer.js.map +0 -1
- package/lib/module/native/NativeTextEmbeddings.js +0 -5
- package/lib/module/native/NativeTextEmbeddings.js.map +0 -1
- package/lib/module/native/NativeTokenizer.js +0 -5
- package/lib/module/native/NativeTokenizer.js.map +0 -1
- package/lib/module/native/NativeVerticalOCR.js +0 -5
- package/lib/module/native/NativeVerticalOCR.js.map +0 -1
- package/lib/module/package.json +0 -1
- package/lib/module/utils/stt.js +0 -22
- package/lib/module/utils/stt.js.map +0 -1
- package/lib/typescript/constants/sttDefaults.d.ts +0 -28
- package/lib/typescript/constants/sttDefaults.d.ts.map +0 -1
- package/lib/typescript/controllers/SpeechToTextController.d.ts +0 -52
- package/lib/typescript/controllers/SpeechToTextController.d.ts.map +0 -1
- package/lib/typescript/native/NativeClassification.d.ts +0 -10
- package/lib/typescript/native/NativeClassification.d.ts.map +0 -1
- package/lib/typescript/native/NativeETModule.d.ts +0 -9
- package/lib/typescript/native/NativeETModule.d.ts.map +0 -1
- package/lib/typescript/native/NativeImageSegmentation.d.ts +0 -10
- package/lib/typescript/native/NativeImageSegmentation.d.ts.map +0 -1
- package/lib/typescript/native/NativeLLM.d.ts +0 -12
- package/lib/typescript/native/NativeLLM.d.ts.map +0 -1
- package/lib/typescript/native/NativeOCR.d.ts +0 -9
- package/lib/typescript/native/NativeOCR.d.ts.map +0 -1
- package/lib/typescript/native/NativeObjectDetection.d.ts +0 -9
- package/lib/typescript/native/NativeObjectDetection.d.ts.map +0 -1
- package/lib/typescript/native/NativeSpeechToText.d.ts +0 -12
- package/lib/typescript/native/NativeSpeechToText.d.ts.map +0 -1
- package/lib/typescript/native/NativeStyleTransfer.d.ts.map +0 -1
- package/lib/typescript/native/NativeTextEmbeddings.d.ts +0 -8
- package/lib/typescript/native/NativeTextEmbeddings.d.ts.map +0 -1
- package/lib/typescript/native/NativeTokenizer.d.ts +0 -12
- package/lib/typescript/native/NativeTokenizer.d.ts.map +0 -1
- package/lib/typescript/native/NativeVerticalOCR.d.ts +0 -9
- package/lib/typescript/native/NativeVerticalOCR.d.ts.map +0 -1
- package/lib/typescript/utils/stt.d.ts +0 -2
- package/lib/typescript/utils/stt.d.ts.map +0 -1
- package/src/constants/sttDefaults.ts +0 -86
- package/src/controllers/SpeechToTextController.ts +0 -458
- package/src/index.tsx +0 -47
- package/src/native/NativeClassification.ts +0 -9
- package/src/native/NativeETModule.ts +0 -14
- package/src/native/NativeImageSegmentation.ts +0 -14
- package/src/native/NativeLLM.ts +0 -14
- package/src/native/NativeOCR.ts +0 -16
- package/src/native/NativeObjectDetection.ts +0 -10
- package/src/native/NativeSpeechToText.ts +0 -17
- package/src/native/NativeStyleTransfer.ts +0 -10
- package/src/native/NativeTextEmbeddings.ts +0 -9
- package/src/native/NativeTokenizer.ts +0 -13
- package/src/native/NativeVerticalOCR.ts +0 -16
- package/src/utils/stt.ts +0 -28
- package/{ios → third-party/ios}/ExecutorchLib.xcframework/Info.plist +4 -4
|
@@ -1,754 +0,0 @@
|
|
|
1
|
-
#import "DetectorUtils.h"
|
|
2
|
-
|
|
3
|
-
@implementation DetectorUtils
|
|
4
|
-
|
|
5
|
-
+ (void)interleavedArrayToMats:(NSArray *)array
|
|
6
|
-
outputMat1:(cv::Mat &)mat1
|
|
7
|
-
outputMat2:(cv::Mat &)mat2
|
|
8
|
-
withSize:(cv::Size)size {
|
|
9
|
-
mat1 = cv::Mat(size.height, size.width, CV_32F);
|
|
10
|
-
mat2 = cv::Mat(size.height, size.width, CV_32F);
|
|
11
|
-
|
|
12
|
-
for (NSUInteger idx = 0; idx < array.count; idx++) {
|
|
13
|
-
const CGFloat value = [array[idx] doubleValue];
|
|
14
|
-
const int x = (idx / 2) % size.width;
|
|
15
|
-
const int y = (idx / 2) / size.width;
|
|
16
|
-
|
|
17
|
-
if (idx % 2 == 0) {
|
|
18
|
-
mat1.at<float>(y, x) = value;
|
|
19
|
-
} else {
|
|
20
|
-
mat2.at<float>(y, x) = value;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
+ (NSArray *)getDetBoxesFromTextMapVertical:(cv::Mat)textMap
|
|
26
|
-
affinityMap:(cv::Mat)affinityMap
|
|
27
|
-
usingTextThreshold:(CGFloat)textThreshold
|
|
28
|
-
linkThreshold:(CGFloat)linkThreshold
|
|
29
|
-
independentCharacters:(BOOL)independentCharacters {
|
|
30
|
-
const int imgH = textMap.rows;
|
|
31
|
-
const int imgW = textMap.cols;
|
|
32
|
-
cv::Mat textScore;
|
|
33
|
-
cv::Mat affinityScore;
|
|
34
|
-
cv::threshold(textMap, textScore, textThreshold, 1, cv::THRESH_BINARY);
|
|
35
|
-
cv::threshold(affinityMap, affinityScore, linkThreshold, 1,
|
|
36
|
-
cv::THRESH_BINARY);
|
|
37
|
-
cv::Mat textScoreComb;
|
|
38
|
-
if (independentCharacters) {
|
|
39
|
-
textScoreComb = textScore - affinityScore;
|
|
40
|
-
cv::threshold(textScoreComb, textScoreComb, 0.0, 0, cv::THRESH_TOZERO);
|
|
41
|
-
cv::threshold(textScoreComb, textScoreComb, 1.0, 1.0, cv::THRESH_TRUNC);
|
|
42
|
-
cv::erode(textScoreComb, textScoreComb,
|
|
43
|
-
cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)),
|
|
44
|
-
cv::Point(-1, -1), 1);
|
|
45
|
-
cv::dilate(textScoreComb, textScoreComb,
|
|
46
|
-
cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)),
|
|
47
|
-
cv::Point(-1, -1), 4);
|
|
48
|
-
} else {
|
|
49
|
-
textScoreComb = textScore + affinityScore;
|
|
50
|
-
cv::threshold(textScoreComb, textScoreComb, 0.0, 0, cv::THRESH_TOZERO);
|
|
51
|
-
cv::threshold(textScoreComb, textScoreComb, 1.0, 1.0, cv::THRESH_TRUNC);
|
|
52
|
-
cv::dilate(textScoreComb, textScoreComb,
|
|
53
|
-
cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)),
|
|
54
|
-
cv::Point(-1, -1), 2);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
cv::Mat binaryMat;
|
|
58
|
-
textScoreComb.convertTo(binaryMat, CV_8UC1);
|
|
59
|
-
|
|
60
|
-
cv::Mat labels, stats, centroids;
|
|
61
|
-
const int nLabels =
|
|
62
|
-
cv::connectedComponentsWithStats(binaryMat, labels, stats, centroids, 4);
|
|
63
|
-
|
|
64
|
-
NSMutableArray *detectedBoxes = [NSMutableArray array];
|
|
65
|
-
for (int i = 1; i < nLabels; i++) {
|
|
66
|
-
const int area = stats.at<int>(i, cv::CC_STAT_AREA);
|
|
67
|
-
if (area < 20)
|
|
68
|
-
continue;
|
|
69
|
-
const int width = stats.at<int>(i, cv::CC_STAT_WIDTH);
|
|
70
|
-
const int height = stats.at<int>(i, cv::CC_STAT_HEIGHT);
|
|
71
|
-
|
|
72
|
-
if (!independentCharacters && height < width)
|
|
73
|
-
continue;
|
|
74
|
-
|
|
75
|
-
cv::Mat mask = (labels == i);
|
|
76
|
-
|
|
77
|
-
cv::Mat segMap = cv::Mat::zeros(textMap.size(), CV_8U);
|
|
78
|
-
segMap.setTo(255, mask);
|
|
79
|
-
|
|
80
|
-
const int x = stats.at<int>(i, cv::CC_STAT_LEFT);
|
|
81
|
-
const int y = stats.at<int>(i, cv::CC_STAT_TOP);
|
|
82
|
-
const int w = stats.at<int>(i, cv::CC_STAT_WIDTH);
|
|
83
|
-
const int h = stats.at<int>(i, cv::CC_STAT_HEIGHT);
|
|
84
|
-
const int dilationRadius = (int)(sqrt((double)(area / MAX(w, h))) * 2.0);
|
|
85
|
-
const int sx = MAX(x - dilationRadius, 0);
|
|
86
|
-
const int ex = MIN(x + w + dilationRadius + 1, imgW);
|
|
87
|
-
const int sy = MAX(y - dilationRadius, 0);
|
|
88
|
-
const int ey = MIN(y + h + dilationRadius + 1, imgH);
|
|
89
|
-
|
|
90
|
-
cv::Rect roi(sx, sy, ex - sx, ey - sy);
|
|
91
|
-
cv::Mat kernel = cv::getStructuringElement(
|
|
92
|
-
cv::MORPH_RECT, cv::Size(1 + dilationRadius, 1 + dilationRadius));
|
|
93
|
-
cv::Mat roiSegMap = segMap(roi);
|
|
94
|
-
cv::dilate(roiSegMap, roiSegMap, kernel, cv::Point(-1, -1), 2);
|
|
95
|
-
|
|
96
|
-
std::vector<std::vector<cv::Point>> contours;
|
|
97
|
-
cv::findContours(segMap, contours, cv::RETR_EXTERNAL,
|
|
98
|
-
cv::CHAIN_APPROX_SIMPLE);
|
|
99
|
-
if (!contours.empty()) {
|
|
100
|
-
cv::RotatedRect minRect = cv::minAreaRect(contours[0]);
|
|
101
|
-
cv::Point2f vertices[4];
|
|
102
|
-
minRect.points(vertices);
|
|
103
|
-
NSMutableArray *pointsArray = [NSMutableArray arrayWithCapacity:4];
|
|
104
|
-
for (int j = 0; j < 4; j++) {
|
|
105
|
-
const CGPoint point = CGPointMake(vertices[j].x, vertices[j].y);
|
|
106
|
-
[pointsArray addObject:[NSValue valueWithCGPoint:point]];
|
|
107
|
-
}
|
|
108
|
-
NSDictionary *dict =
|
|
109
|
-
@{@"bbox" : pointsArray, @"angle" : @(minRect.angle)};
|
|
110
|
-
[detectedBoxes addObject:dict];
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
return detectedBoxes;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* This method applies a series of image processing operations to identify
|
|
119
|
-
* likely areas of text in the textMap and return the bounding boxes for single
|
|
120
|
-
* words.
|
|
121
|
-
*
|
|
122
|
-
* @param textMap A cv::Mat representing a heat map of the characters of text
|
|
123
|
-
* being present in an image.
|
|
124
|
-
* @param affinityMap A cv::Mat representing a heat map of the affinity between
|
|
125
|
-
* characters.
|
|
126
|
-
* @param textThreshold A CGFloat representing the threshold for the text map.
|
|
127
|
-
* @param linkThreshold A CGFloat representing the threshold for the affinity
|
|
128
|
-
* map.
|
|
129
|
-
* @param lowTextThreshold A CGFloat representing the low text.
|
|
130
|
-
*
|
|
131
|
-
* @return An NSArray containing NSDictionary objects. Each dictionary includes:
|
|
132
|
-
* - "bbox": an NSArray of CGPoint values representing the vertices of the
|
|
133
|
-
* detected text box.
|
|
134
|
-
* - "angle": an NSNumber representing the rotation angle of the box.
|
|
135
|
-
*/
|
|
136
|
-
+ (NSArray *)getDetBoxesFromTextMap:(cv::Mat)textMap
|
|
137
|
-
affinityMap:(cv::Mat)affinityMap
|
|
138
|
-
usingTextThreshold:(CGFloat)textThreshold
|
|
139
|
-
linkThreshold:(CGFloat)linkThreshold
|
|
140
|
-
lowTextThreshold:(CGFloat)lowTextThreshold {
|
|
141
|
-
const int imgH = textMap.rows;
|
|
142
|
-
const int imgW = textMap.cols;
|
|
143
|
-
cv::Mat textScore;
|
|
144
|
-
cv::Mat affinityScore;
|
|
145
|
-
cv::threshold(textMap, textScore, textThreshold, 1, cv::THRESH_BINARY);
|
|
146
|
-
cv::threshold(affinityMap, affinityScore, linkThreshold, 1,
|
|
147
|
-
cv::THRESH_BINARY);
|
|
148
|
-
cv::Mat textScoreComb = textScore + affinityScore;
|
|
149
|
-
cv::threshold(textScoreComb, textScoreComb, 0, 1, cv::THRESH_BINARY);
|
|
150
|
-
cv::Mat binaryMat;
|
|
151
|
-
textScoreComb.convertTo(binaryMat, CV_8UC1);
|
|
152
|
-
|
|
153
|
-
cv::Mat labels, stats, centroids;
|
|
154
|
-
const int nLabels =
|
|
155
|
-
cv::connectedComponentsWithStats(binaryMat, labels, stats, centroids, 4);
|
|
156
|
-
|
|
157
|
-
NSMutableArray *detectedBoxes = [NSMutableArray array];
|
|
158
|
-
for (int i = 1; i < nLabels; i++) {
|
|
159
|
-
const int area = stats.at<int>(i, cv::CC_STAT_AREA);
|
|
160
|
-
if (area < 10)
|
|
161
|
-
continue;
|
|
162
|
-
|
|
163
|
-
cv::Mat mask = (labels == i);
|
|
164
|
-
CGFloat maxVal;
|
|
165
|
-
cv::minMaxLoc(textMap, NULL, &maxVal, NULL, NULL, mask);
|
|
166
|
-
if (maxVal < lowTextThreshold)
|
|
167
|
-
continue;
|
|
168
|
-
|
|
169
|
-
cv::Mat segMap = cv::Mat::zeros(textMap.size(), CV_8U);
|
|
170
|
-
segMap.setTo(255, mask);
|
|
171
|
-
|
|
172
|
-
const int x = stats.at<int>(i, cv::CC_STAT_LEFT);
|
|
173
|
-
const int y = stats.at<int>(i, cv::CC_STAT_TOP);
|
|
174
|
-
const int w = stats.at<int>(i, cv::CC_STAT_WIDTH);
|
|
175
|
-
const int h = stats.at<int>(i, cv::CC_STAT_HEIGHT);
|
|
176
|
-
const int dilationRadius = (int)(sqrt((double)(area / MAX(w, h))) * 2.0);
|
|
177
|
-
const int sx = MAX(x - dilationRadius, 0);
|
|
178
|
-
const int ex = MIN(x + w + dilationRadius + 1, imgW);
|
|
179
|
-
const int sy = MAX(y - dilationRadius, 0);
|
|
180
|
-
const int ey = MIN(y + h + dilationRadius + 1, imgH);
|
|
181
|
-
|
|
182
|
-
cv::Rect roi(sx, sy, ex - sx, ey - sy);
|
|
183
|
-
cv::Mat kernel = cv::getStructuringElement(
|
|
184
|
-
cv::MORPH_RECT, cv::Size(1 + dilationRadius, 1 + dilationRadius));
|
|
185
|
-
cv::Mat roiSegMap = segMap(roi);
|
|
186
|
-
cv::dilate(roiSegMap, roiSegMap, kernel);
|
|
187
|
-
|
|
188
|
-
std::vector<std::vector<cv::Point>> contours;
|
|
189
|
-
cv::findContours(segMap, contours, cv::RETR_EXTERNAL,
|
|
190
|
-
cv::CHAIN_APPROX_SIMPLE);
|
|
191
|
-
if (!contours.empty()) {
|
|
192
|
-
cv::RotatedRect minRect = cv::minAreaRect(contours[0]);
|
|
193
|
-
cv::Point2f vertices[4];
|
|
194
|
-
minRect.points(vertices);
|
|
195
|
-
NSMutableArray *pointsArray = [NSMutableArray arrayWithCapacity:4];
|
|
196
|
-
for (int j = 0; j < 4; j++) {
|
|
197
|
-
const CGPoint point = CGPointMake(vertices[j].x, vertices[j].y);
|
|
198
|
-
[pointsArray addObject:[NSValue valueWithCGPoint:point]];
|
|
199
|
-
}
|
|
200
|
-
NSDictionary *dict =
|
|
201
|
-
@{@"bbox" : pointsArray, @"angle" : @(minRect.angle)};
|
|
202
|
-
[detectedBoxes addObject:dict];
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
return detectedBoxes;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
+ (NSArray<NSDictionary *> *)restoreBboxRatio:(NSArray<NSDictionary *> *)boxes
|
|
210
|
-
usingRestoreRatio:(CGFloat)restoreRatio {
|
|
211
|
-
NSMutableArray *result = [NSMutableArray array];
|
|
212
|
-
for (NSUInteger i = 0; i < [boxes count]; i++) {
|
|
213
|
-
NSDictionary *box = boxes[i];
|
|
214
|
-
NSMutableArray *boxArray = [NSMutableArray arrayWithCapacity:4];
|
|
215
|
-
for (NSValue *value in box[@"bbox"]) {
|
|
216
|
-
CGPoint point = [value CGPointValue];
|
|
217
|
-
point.x *= restoreRatio;
|
|
218
|
-
point.y *= restoreRatio;
|
|
219
|
-
[boxArray addObject:[NSValue valueWithCGPoint:point]];
|
|
220
|
-
}
|
|
221
|
-
NSDictionary *dict = @{@"bbox" : boxArray, @"angle" : box[@"angle"]};
|
|
222
|
-
[result addObject:dict];
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
return result;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* This method normalizes angle returned from cv::minAreaRect function which
|
|
230
|
-
*ranges from 0 to 90 degrees.
|
|
231
|
-
**/
|
|
232
|
-
+ (CGFloat)normalizeAngle:(CGFloat)angle {
|
|
233
|
-
if (angle > 45) {
|
|
234
|
-
return angle - 90;
|
|
235
|
-
}
|
|
236
|
-
return angle;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
+ (CGPoint)midpointBetweenPoint:(CGPoint)p1 andPoint:(CGPoint)p2 {
|
|
240
|
-
return CGPointMake((p1.x + p2.x) / 2, (p1.y + p2.y) / 2);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
+ (CGFloat)distanceFromPoint:(CGPoint)p1 toPoint:(CGPoint)p2 {
|
|
244
|
-
const CGFloat xDist = (p2.x - p1.x);
|
|
245
|
-
const CGFloat yDist = (p2.y - p1.y);
|
|
246
|
-
return sqrt(xDist * xDist + yDist * yDist);
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
+ (CGPoint)centerOfBox:(NSArray<NSValue *> *)box {
|
|
250
|
-
return [self midpointBetweenPoint:[box[0] CGPointValue]
|
|
251
|
-
andPoint:[box[2] CGPointValue]];
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
+ (CGFloat)maxSideLength:(NSArray<NSValue *> *)points {
|
|
255
|
-
CGFloat maxSideLength = 0;
|
|
256
|
-
NSInteger numOfPoints = points.count;
|
|
257
|
-
for (NSInteger i = 0; i < numOfPoints; i++) {
|
|
258
|
-
const CGPoint currentPoint = [points[i] CGPointValue];
|
|
259
|
-
const CGPoint nextPoint = [points[(i + 1) % numOfPoints] CGPointValue];
|
|
260
|
-
|
|
261
|
-
const CGFloat sideLength = [self distanceFromPoint:currentPoint
|
|
262
|
-
toPoint:nextPoint];
|
|
263
|
-
if (sideLength > maxSideLength) {
|
|
264
|
-
maxSideLength = sideLength;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
return maxSideLength;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
+ (CGFloat)minSideLength:(NSArray<NSValue *> *)points {
|
|
271
|
-
CGFloat minSideLength = CGFLOAT_MAX;
|
|
272
|
-
NSInteger numOfPoints = points.count;
|
|
273
|
-
|
|
274
|
-
for (NSInteger i = 0; i < numOfPoints; i++) {
|
|
275
|
-
const CGPoint currentPoint = [points[i] CGPointValue];
|
|
276
|
-
const CGPoint nextPoint = [points[(i + 1) % numOfPoints] CGPointValue];
|
|
277
|
-
|
|
278
|
-
const CGFloat sideLength = [self distanceFromPoint:currentPoint
|
|
279
|
-
toPoint:nextPoint];
|
|
280
|
-
if (sideLength < minSideLength) {
|
|
281
|
-
minSideLength = sideLength;
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
return minSideLength;
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
+ (CGFloat)calculateMinimalDistanceBetweenBox:(NSArray<NSValue *> *)box1
|
|
289
|
-
andBox:(NSArray<NSValue *> *)box2 {
|
|
290
|
-
CGFloat minDistance = CGFLOAT_MAX;
|
|
291
|
-
for (NSValue *value1 in box1) {
|
|
292
|
-
const CGPoint corner1 = [value1 CGPointValue];
|
|
293
|
-
for (NSValue *value2 in box2) {
|
|
294
|
-
const CGPoint corner2 = [value2 CGPointValue];
|
|
295
|
-
const CGFloat distance = [self distanceFromPoint:corner1 toPoint:corner2];
|
|
296
|
-
if (distance < minDistance) {
|
|
297
|
-
minDistance = distance;
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
return minDistance;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
+ (NSArray<NSValue *> *)rotateBox:(NSArray<NSValue *> *)box
|
|
305
|
-
withAngle:(CGFloat)angle {
|
|
306
|
-
const CGPoint center = [self centerOfBox:box];
|
|
307
|
-
|
|
308
|
-
const CGFloat radians = angle * M_PI / 180.0;
|
|
309
|
-
|
|
310
|
-
NSMutableArray<NSValue *> *rotatedPoints =
|
|
311
|
-
[NSMutableArray arrayWithCapacity:4];
|
|
312
|
-
for (NSValue *value in box) {
|
|
313
|
-
const CGPoint point = [value CGPointValue];
|
|
314
|
-
|
|
315
|
-
const CGFloat translatedX = point.x - center.x;
|
|
316
|
-
const CGFloat translatedY = point.y - center.y;
|
|
317
|
-
|
|
318
|
-
const CGFloat rotatedX =
|
|
319
|
-
translatedX * cos(radians) - translatedY * sin(radians);
|
|
320
|
-
const CGFloat rotatedY =
|
|
321
|
-
translatedX * sin(radians) + translatedY * cos(radians);
|
|
322
|
-
|
|
323
|
-
const CGPoint rotatedPoint =
|
|
324
|
-
CGPointMake(rotatedX + center.x, rotatedY + center.y);
|
|
325
|
-
[rotatedPoints addObject:[NSValue valueWithCGPoint:rotatedPoint]];
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
return rotatedPoints;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
/**
|
|
332
|
-
* Orders a set of points in a clockwise direction starting with the top-left
|
|
333
|
-
* point.
|
|
334
|
-
*
|
|
335
|
-
* Process:
|
|
336
|
-
* 1. It iterates through each CGPoint extracted from the NSValues.
|
|
337
|
-
* 2. For each point, it calculates the sum (x + y) and difference (y - x) of
|
|
338
|
-
* the coordinates.
|
|
339
|
-
* 3. Points are classified into:
|
|
340
|
-
* - Top-left: Minimum sum.
|
|
341
|
-
* - Bottom-right: Maximum sum.
|
|
342
|
-
* - Top-right: Minimum difference.
|
|
343
|
-
* - Bottom-left: Maximum difference.
|
|
344
|
-
* 4. The points are ordered starting from the top-left in a clockwise manner:
|
|
345
|
-
* top-left, top-right, bottom-right, bottom-left.
|
|
346
|
-
*/
|
|
347
|
-
+ (NSArray *)orderPointsClockwise:(NSArray<NSValue *> *)points {
|
|
348
|
-
CGPoint topLeft, topRight, bottomRight, bottomLeft;
|
|
349
|
-
CGFloat minSum = FLT_MAX;
|
|
350
|
-
CGFloat maxSum = -FLT_MAX;
|
|
351
|
-
CGFloat minDiff = FLT_MAX;
|
|
352
|
-
CGFloat maxDiff = -FLT_MAX;
|
|
353
|
-
|
|
354
|
-
for (NSValue *value in points) {
|
|
355
|
-
const CGPoint pt = [value CGPointValue];
|
|
356
|
-
const CGFloat sum = pt.x + pt.y;
|
|
357
|
-
const CGFloat diff = pt.y - pt.x;
|
|
358
|
-
|
|
359
|
-
if (sum < minSum) {
|
|
360
|
-
minSum = sum;
|
|
361
|
-
topLeft = pt;
|
|
362
|
-
}
|
|
363
|
-
if (sum > maxSum) {
|
|
364
|
-
maxSum = sum;
|
|
365
|
-
bottomRight = pt;
|
|
366
|
-
}
|
|
367
|
-
if (diff < minDiff) {
|
|
368
|
-
minDiff = diff;
|
|
369
|
-
topRight = pt;
|
|
370
|
-
}
|
|
371
|
-
if (diff > maxDiff) {
|
|
372
|
-
maxDiff = diff;
|
|
373
|
-
bottomLeft = pt;
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
NSArray<NSValue *> *rect = @[
|
|
378
|
-
[NSValue valueWithCGPoint:topLeft], [NSValue valueWithCGPoint:topRight],
|
|
379
|
-
[NSValue valueWithCGPoint:bottomRight],
|
|
380
|
-
[NSValue valueWithCGPoint:bottomLeft]
|
|
381
|
-
];
|
|
382
|
-
|
|
383
|
-
return rect;
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
+ (std::vector<cv::Point2f>)pointsFromNSValues:(NSArray<NSValue *> *)nsValues {
|
|
387
|
-
std::vector<cv::Point2f> points;
|
|
388
|
-
for (NSValue *value in nsValues) {
|
|
389
|
-
const CGPoint point = [value CGPointValue];
|
|
390
|
-
points.emplace_back(point.x, point.y);
|
|
391
|
-
}
|
|
392
|
-
return points;
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
+ (NSArray<NSValue *> *)nsValuesFromPoints:(cv::Point2f *)points
|
|
396
|
-
count:(int)count {
|
|
397
|
-
NSMutableArray<NSValue *> *nsValues =
|
|
398
|
-
[[NSMutableArray alloc] initWithCapacity:count];
|
|
399
|
-
for (int i = 0; i < count; i++) {
|
|
400
|
-
[nsValues addObject:[NSValue valueWithCGPoint:CGPointMake(points[i].x,
|
|
401
|
-
points[i].y)]];
|
|
402
|
-
}
|
|
403
|
-
return nsValues;
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
+ (NSArray<NSValue *> *)mergeRotatedBoxes:(NSArray<NSValue *> *)box1
|
|
407
|
-
withBox:(NSArray<NSValue *> *)box2 {
|
|
408
|
-
box1 = [self orderPointsClockwise:box1];
|
|
409
|
-
box2 = [self orderPointsClockwise:box2];
|
|
410
|
-
|
|
411
|
-
std::vector<cv::Point2f> points1 = [self pointsFromNSValues:box1];
|
|
412
|
-
std::vector<cv::Point2f> points2 = [self pointsFromNSValues:box2];
|
|
413
|
-
|
|
414
|
-
std::vector<cv::Point2f> allPoints;
|
|
415
|
-
allPoints.insert(allPoints.end(), points1.begin(), points1.end());
|
|
416
|
-
allPoints.insert(allPoints.end(), points2.begin(), points2.end());
|
|
417
|
-
|
|
418
|
-
std::vector<int> hullIndices;
|
|
419
|
-
cv::convexHull(allPoints, hullIndices, false);
|
|
420
|
-
|
|
421
|
-
std::vector<cv::Point2f> hullPoints;
|
|
422
|
-
for (int idx : hullIndices) {
|
|
423
|
-
hullPoints.push_back(allPoints[idx]);
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
cv::RotatedRect minAreaRect = cv::minAreaRect(hullPoints);
|
|
427
|
-
|
|
428
|
-
cv::Point2f rectPoints[4];
|
|
429
|
-
minAreaRect.points(rectPoints);
|
|
430
|
-
|
|
431
|
-
return [self nsValuesFromPoints:rectPoints count:4];
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
+ (NSMutableArray<NSDictionary *> *)
|
|
435
|
-
removeSmallBoxesFromArray:(NSArray *)boxes
|
|
436
|
-
usingMinSideThreshold:(CGFloat)minSideThreshold
|
|
437
|
-
maxSideThreshold:(CGFloat)maxSideThreshold {
|
|
438
|
-
NSMutableArray *filteredBoxes = [NSMutableArray array];
|
|
439
|
-
|
|
440
|
-
for (NSDictionary *box in boxes) {
|
|
441
|
-
const CGFloat maxSideLength = [self maxSideLength:box[@"bbox"]];
|
|
442
|
-
const CGFloat minSideLength = [self minSideLength:box[@"bbox"]];
|
|
443
|
-
if (minSideLength > minSideThreshold && maxSideLength > maxSideThreshold) {
|
|
444
|
-
[filteredBoxes addObject:box];
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
return filteredBoxes;
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
+ (CGFloat)minimumYFromBox:(NSArray<NSValue *> *)box {
|
|
452
|
-
__block CGFloat minY = CGFLOAT_MAX;
|
|
453
|
-
[box enumerateObjectsUsingBlock:^(NSValue *_Nonnull obj, NSUInteger idx,
|
|
454
|
-
BOOL *_Nonnull stop) {
|
|
455
|
-
const CGPoint pt = [obj CGPointValue];
|
|
456
|
-
if (pt.y < minY) {
|
|
457
|
-
minY = pt.y;
|
|
458
|
-
}
|
|
459
|
-
}];
|
|
460
|
-
return minY;
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
/**
|
|
464
|
-
* This method calculates the distances between each sequential pair of points
|
|
465
|
-
* in a presumed quadrilateral, identifies the two shortest sides, and fits a
|
|
466
|
-
* linear model to the midpoints of these sides. It also evaluates whether the
|
|
467
|
-
* resulting line should be considered vertical based on a predefined threshold
|
|
468
|
-
* for the x-coordinate differences.
|
|
469
|
-
*
|
|
470
|
-
* If the line is vertical it is fitted as a function of x = my + c, otherwise
|
|
471
|
-
* as y = mx + c.
|
|
472
|
-
*
|
|
473
|
-
* @return A NSDictionary containing:
|
|
474
|
-
* - "slope": NSNumber representing the slope (m) of the line.
|
|
475
|
-
* - "intercept": NSNumber representing the line's intercept (c) with y-axis.
|
|
476
|
-
* - "isVertical": NSNumber (boolean) indicating whether the line is
|
|
477
|
-
* considered vertical.
|
|
478
|
-
*/
|
|
479
|
-
+ (NSDictionary *)fitLineToShortestSides:(NSArray<NSValue *> *)points {
|
|
480
|
-
NSMutableArray<NSDictionary *> *sides = [NSMutableArray array];
|
|
481
|
-
NSMutableArray<NSValue *> *midpoints = [NSMutableArray array];
|
|
482
|
-
|
|
483
|
-
for (int i = 0; i < 4; i++) {
|
|
484
|
-
const CGPoint p1 = [points[i] CGPointValue];
|
|
485
|
-
const CGPoint p2 = [points[(i + 1) % 4] CGPointValue];
|
|
486
|
-
|
|
487
|
-
const CGFloat sideLength = [self distanceFromPoint:p1 toPoint:p2];
|
|
488
|
-
[sides addObject:@{@"length" : @(sideLength), @"index" : @(i)}];
|
|
489
|
-
[midpoints
|
|
490
|
-
addObject:[NSValue valueWithCGPoint:[self midpointBetweenPoint:p1
|
|
491
|
-
andPoint:p2]]];
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
[sides
|
|
495
|
-
sortUsingDescriptors:@[ [NSSortDescriptor sortDescriptorWithKey:@"length"
|
|
496
|
-
ascending:YES] ]];
|
|
497
|
-
|
|
498
|
-
const CGPoint midpoint1 =
|
|
499
|
-
[midpoints [[sides [0] [@"index"] intValue]] CGPointValue];
|
|
500
|
-
const CGPoint midpoint2 =
|
|
501
|
-
[midpoints [[sides [1] [@"index"] intValue]] CGPointValue];
|
|
502
|
-
const CGFloat dx = fabs(midpoint2.x - midpoint1.x);
|
|
503
|
-
|
|
504
|
-
CGFloat m, c;
|
|
505
|
-
BOOL isVertical;
|
|
506
|
-
|
|
507
|
-
std::vector<cv::Point2f> cvMidPoints = {
|
|
508
|
-
cv::Point2f(midpoint1.x, midpoint1.y),
|
|
509
|
-
cv::Point2f(midpoint2.x, midpoint2.y)};
|
|
510
|
-
cv::Vec4f line;
|
|
511
|
-
|
|
512
|
-
if (dx < verticalLineThreshold) {
|
|
513
|
-
for (auto &pt : cvMidPoints)
|
|
514
|
-
std::swap(pt.x, pt.y);
|
|
515
|
-
cv::fitLine(cvMidPoints, line, cv::DIST_L2, 0, 0.01, 0.01);
|
|
516
|
-
m = line[1] / line[0];
|
|
517
|
-
c = line[3] - m * line[2];
|
|
518
|
-
isVertical = YES;
|
|
519
|
-
} else {
|
|
520
|
-
cv::fitLine(cvMidPoints, line, cv::DIST_L2, 0, 0.01, 0.01);
|
|
521
|
-
m = line[1] / line[0];
|
|
522
|
-
c = line[3] - m * line[2];
|
|
523
|
-
isVertical = NO;
|
|
524
|
-
}
|
|
525
|
-
|
|
526
|
-
return @{@"slope" : @(m), @"intercept" : @(c), @"isVertical" : @(isVertical)};
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
/**
|
|
530
|
-
* This method assesses each box from a provided array, checks its center
|
|
531
|
-
* against the center of a "current box", and evaluates its alignment with a
|
|
532
|
-
* specified line equation. The function specifically searches for the box whose
|
|
533
|
-
* center is closest to the current box, that has not been ignored, and fits
|
|
534
|
-
* within a defined distance from the line.
|
|
535
|
-
*
|
|
536
|
-
* @param boxes An NSArray of NSDictionary objects where each dictionary
|
|
537
|
-
* represents a box with keys "bbox" and "angle". "bbox" is an NSArray of
|
|
538
|
-
* NSValue objects each encapsulating CGPoint that define the box vertices.
|
|
539
|
-
* "angle" is a NSNumber representing the box's rotation angle.
|
|
540
|
-
* @param ignoredIdxs An NSSet of NSNumber objects representing indices of boxes
|
|
541
|
-
* to ignore in the evaluation.
|
|
542
|
-
* @param currentBox An NSArray of NSValue objects encapsulating CGPoints
|
|
543
|
-
* representing the current box to compare against.
|
|
544
|
-
* @param isVertical A pointer to a BOOL indicating if the line to compare
|
|
545
|
-
* distance to is vertical.
|
|
546
|
-
* @param m The slope (gradient) of the line against which the box's alignment
|
|
547
|
-
* is checked.
|
|
548
|
-
* @param c The y-intercept of the line equation y = mx + c.
|
|
549
|
-
* @param centerThreshold A multiplier to determine the threshold for the
|
|
550
|
-
* distance between the box's center and the line.
|
|
551
|
-
*
|
|
552
|
-
* @return A NSDictionary containing:
|
|
553
|
-
* - "idx" : NSNumber indicating the index of the found box in the
|
|
554
|
-
* original NSArray.
|
|
555
|
-
* - "boxHeight" : NSNumber representing the shortest side length of the
|
|
556
|
-
* found box. Returns nil if no suitable box is found.
|
|
557
|
-
*/
|
|
558
|
-
+ (NSDictionary *)findClosestBox:(NSArray<NSDictionary *> *)boxes
|
|
559
|
-
ignoredIdxs:(NSSet<NSNumber *> *)ignoredIdxs
|
|
560
|
-
currentBox:(NSArray<NSValue *> *)currentBox
|
|
561
|
-
isVertical:(BOOL)isVertical
|
|
562
|
-
m:(CGFloat)m
|
|
563
|
-
c:(CGFloat)c
|
|
564
|
-
centerThreshold:(CGFloat)centerThreshold {
|
|
565
|
-
CGFloat smallestDistance = CGFLOAT_MAX;
|
|
566
|
-
NSInteger idx = -1;
|
|
567
|
-
CGFloat boxHeight = 0;
|
|
568
|
-
const CGPoint centerOfCurrentBox = [self centerOfBox:currentBox];
|
|
569
|
-
|
|
570
|
-
for (NSUInteger i = 0; i < boxes.count; i++) {
|
|
571
|
-
if ([ignoredIdxs containsObject:@(i)]) {
|
|
572
|
-
continue;
|
|
573
|
-
}
|
|
574
|
-
NSArray<NSValue *> *bbox = boxes[i][@"bbox"];
|
|
575
|
-
const CGPoint centerOfProcessedBox = [self centerOfBox:bbox];
|
|
576
|
-
const CGFloat distanceBetweenCenters =
|
|
577
|
-
[self distanceFromPoint:centerOfCurrentBox
|
|
578
|
-
toPoint:centerOfProcessedBox];
|
|
579
|
-
|
|
580
|
-
if (distanceBetweenCenters >= smallestDistance) {
|
|
581
|
-
continue;
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
boxHeight = [self minSideLength:bbox];
|
|
585
|
-
|
|
586
|
-
const CGFloat lineDistance =
|
|
587
|
-
(isVertical
|
|
588
|
-
? fabs(centerOfProcessedBox.x - (m * centerOfProcessedBox.y + c))
|
|
589
|
-
: fabs(centerOfProcessedBox.y - (m * centerOfProcessedBox.x + c)));
|
|
590
|
-
|
|
591
|
-
if (lineDistance < boxHeight * centerThreshold) {
|
|
592
|
-
idx = i;
|
|
593
|
-
smallestDistance = distanceBetweenCenters;
|
|
594
|
-
}
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
return idx != -1 ? @{@"idx" : @(idx), @"boxHeight" : @(boxHeight)} : nil;
|
|
598
|
-
}
|
|
599
|
-
|
|
600
|
-
/**
|
|
601
|
-
* This method processes an array of text box dictionaries, each containing
|
|
602
|
-
* details about individual text boxes, and attempts to group and merge these
|
|
603
|
-
* boxes based on specified criteria including proximity, alignment, and size
|
|
604
|
-
* thresholds. It prioritizes merging of boxes that are aligned closely in
|
|
605
|
-
* angle, are near each other, and whose sizes are compatible based on the given
|
|
606
|
-
* thresholds.
|
|
607
|
-
*
|
|
608
|
-
* @param boxes An array of NSDictionary objects where each dictionary
|
|
609
|
-
* represents a text box. Each dictionary must have at least a "bbox" key with
|
|
610
|
-
* an NSArray of NSValue wrapping CGPoints defining the box vertices, and an
|
|
611
|
-
* "angle" key indicating the orientation of the box.
|
|
612
|
-
* @param centerThreshold A CGFloat representing the threshold for considering
|
|
613
|
-
* the distance between center and fitted line.
|
|
614
|
-
* @param distanceThreshold A CGFloat that defines the maximum allowed distance
|
|
615
|
-
* between boxes for them to be considered for merging.
|
|
616
|
-
* @param heightThreshold A CGFloat representing the maximum allowed difference
|
|
617
|
-
* in height between boxes for merging.
|
|
618
|
-
* @param minSideThreshold An int that defines the minimum dimension threshold
|
|
619
|
-
* to filter out small boxes after grouping.
|
|
620
|
-
* @param maxSideThreshold An int that specifies the maximum dimension threshold
|
|
621
|
-
* for filtering boxes post-grouping.
|
|
622
|
-
* @param maxWidth An int that represents the maximum width allowable for a
|
|
623
|
-
* merged box.
|
|
624
|
-
*
|
|
625
|
-
* @return An NSArray of NSDictionary objects representing the merged boxes.
|
|
626
|
-
* Each dictionary contains:
|
|
627
|
-
* - "bbox": An NSArray of NSValue each containing a CGPoint that
|
|
628
|
-
* defines the vertices of the merged box.
|
|
629
|
-
* - "angle": NSNumber representing the computed orientation of the
|
|
630
|
-
* merged box.
|
|
631
|
-
*
|
|
632
|
-
* Processing Steps:
|
|
633
|
-
* 1. Sort initial boxes based on their maximum side length.
|
|
634
|
-
* 2. Sequentially merge boxes considering alignment, proximity, and size
|
|
635
|
-
* compatibility.
|
|
636
|
-
* 3. Post-processing to remove any boxes that are too small or exceed max side
|
|
637
|
-
* criteria.
|
|
638
|
-
* 4. Sort the final array of boxes by their vertical positions.
|
|
639
|
-
*/
|
|
640
|
-
+ (NSArray *)groupTextBoxes:(NSMutableArray<NSDictionary *> *)boxes
|
|
641
|
-
centerThreshold:(CGFloat)centerThreshold
|
|
642
|
-
distanceThreshold:(CGFloat)distanceThreshold
|
|
643
|
-
heightThreshold:(CGFloat)heightThreshold
|
|
644
|
-
minSideThreshold:(int)minSideThreshold
|
|
645
|
-
maxSideThreshold:(int)maxSideThreshold
|
|
646
|
-
maxWidth:(int)maxWidth {
|
|
647
|
-
// Sort boxes based on their maximum side length
|
|
648
|
-
boxes = [boxes sortedArrayUsingComparator:^NSComparisonResult(
|
|
649
|
-
NSDictionary *obj1, NSDictionary *obj2) {
|
|
650
|
-
const CGFloat maxLen1 = [self maxSideLength:obj1[@"bbox"]];
|
|
651
|
-
const CGFloat maxLen2 = [self maxSideLength:obj2[@"bbox"]];
|
|
652
|
-
return (maxLen1 < maxLen2) ? NSOrderedDescending
|
|
653
|
-
: (maxLen1 > maxLen2) ? NSOrderedAscending
|
|
654
|
-
: NSOrderedSame;
|
|
655
|
-
}].mutableCopy;
|
|
656
|
-
|
|
657
|
-
NSMutableArray<NSDictionary *> *mergedArray = [NSMutableArray array];
|
|
658
|
-
CGFloat lineAngle;
|
|
659
|
-
while (boxes.count > 0) {
|
|
660
|
-
NSMutableDictionary *currentBox = [boxes[0] mutableCopy];
|
|
661
|
-
CGFloat normalizedAngle =
|
|
662
|
-
[self normalizeAngle:[currentBox[@"angle"] floatValue]];
|
|
663
|
-
[boxes removeObjectAtIndex:0];
|
|
664
|
-
NSMutableArray<NSNumber *> *ignoredIdxs = [NSMutableArray array];
|
|
665
|
-
|
|
666
|
-
while (YES) {
|
|
667
|
-
// Find all aligned boxes and merge them until max_size is reached or no
|
|
668
|
-
// more boxes can be merged
|
|
669
|
-
NSDictionary *fittedLine =
|
|
670
|
-
[self fitLineToShortestSides:currentBox[@"bbox"]];
|
|
671
|
-
const CGFloat slope = [fittedLine[@"slope"] floatValue];
|
|
672
|
-
const CGFloat intercept = [fittedLine[@"intercept"] floatValue];
|
|
673
|
-
const BOOL isVertical = [fittedLine[@"isVertical"] boolValue];
|
|
674
|
-
|
|
675
|
-
lineAngle = atan(slope) * 180 / M_PI;
|
|
676
|
-
if (isVertical) {
|
|
677
|
-
lineAngle = -90;
|
|
678
|
-
}
|
|
679
|
-
|
|
680
|
-
NSDictionary *closestBoxInfo =
|
|
681
|
-
[self findClosestBox:boxes
|
|
682
|
-
ignoredIdxs:[NSSet setWithArray:ignoredIdxs]
|
|
683
|
-
currentBox:currentBox[@"bbox"]
|
|
684
|
-
isVertical:isVertical
|
|
685
|
-
m:slope
|
|
686
|
-
c:intercept
|
|
687
|
-
centerThreshold:centerThreshold];
|
|
688
|
-
if (closestBoxInfo == nil)
|
|
689
|
-
break;
|
|
690
|
-
|
|
691
|
-
NSInteger candidateIdx = [closestBoxInfo[@"idx"] integerValue];
|
|
692
|
-
NSMutableDictionary *candidateBox = [boxes[candidateIdx] mutableCopy];
|
|
693
|
-
const CGFloat candidateHeight = [closestBoxInfo[@"boxHeight"] floatValue];
|
|
694
|
-
|
|
695
|
-
if (([candidateBox[@"angle"] isEqual:@90] && !isVertical) ||
|
|
696
|
-
([candidateBox[@"angle"] isEqual:@0] && isVertical)) {
|
|
697
|
-
candidateBox[@"bbox"] = [self rotateBox:candidateBox[@"bbox"]
|
|
698
|
-
withAngle:normalizedAngle];
|
|
699
|
-
}
|
|
700
|
-
|
|
701
|
-
const CGFloat minDistance =
|
|
702
|
-
[self calculateMinimalDistanceBetweenBox:candidateBox[@"bbox"]
|
|
703
|
-
andBox:currentBox[@"bbox"]];
|
|
704
|
-
const CGFloat mergedHeight = [self minSideLength:currentBox[@"bbox"]];
|
|
705
|
-
if (minDistance < distanceThreshold * candidateHeight &&
|
|
706
|
-
fabs(mergedHeight - candidateHeight) <
|
|
707
|
-
candidateHeight * heightThreshold) {
|
|
708
|
-
currentBox[@"bbox"] = [self mergeRotatedBoxes:currentBox[@"bbox"]
|
|
709
|
-
withBox:candidateBox[@"bbox"]];
|
|
710
|
-
[boxes removeObjectAtIndex:candidateIdx];
|
|
711
|
-
[ignoredIdxs removeAllObjects];
|
|
712
|
-
if ([self maxSideLength:currentBox[@"bbox"]] > maxWidth) {
|
|
713
|
-
break;
|
|
714
|
-
}
|
|
715
|
-
} else {
|
|
716
|
-
[ignoredIdxs addObject:@(candidateIdx)];
|
|
717
|
-
}
|
|
718
|
-
}
|
|
719
|
-
|
|
720
|
-
[mergedArray
|
|
721
|
-
addObject:@{@"bbox" : currentBox[@"bbox"], @"angle" : @(lineAngle)}];
|
|
722
|
-
}
|
|
723
|
-
|
|
724
|
-
// Remove small boxes and sort by vertical
|
|
725
|
-
mergedArray = [self removeSmallBoxesFromArray:mergedArray
|
|
726
|
-
usingMinSideThreshold:minSideThreshold
|
|
727
|
-
maxSideThreshold:maxSideThreshold];
|
|
728
|
-
|
|
729
|
-
NSArray *sortedBoxes = [mergedArray
|
|
730
|
-
sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *obj1,
|
|
731
|
-
NSDictionary *obj2) {
|
|
732
|
-
NSArray<NSValue *> *coords1 = obj1[@"bbox"];
|
|
733
|
-
NSArray<NSValue *> *coords2 = obj2[@"bbox"];
|
|
734
|
-
const CGFloat minY1 = [self minimumYFromBox:coords1];
|
|
735
|
-
const CGFloat minY2 = [self minimumYFromBox:coords2];
|
|
736
|
-
return (minY1 < minY2) ? NSOrderedAscending
|
|
737
|
-
: (minY1 > minY2) ? NSOrderedDescending
|
|
738
|
-
: NSOrderedSame;
|
|
739
|
-
}];
|
|
740
|
-
|
|
741
|
-
NSMutableArray *orderedSortedBoxes =
|
|
742
|
-
[[NSMutableArray alloc] initWithCapacity:[sortedBoxes count]];
|
|
743
|
-
for (NSDictionary *dict in sortedBoxes) {
|
|
744
|
-
NSMutableDictionary *mutableDict = [dict mutableCopy];
|
|
745
|
-
NSArray<NSValue *> *originalBBox = mutableDict[@"bbox"];
|
|
746
|
-
NSArray<NSValue *> *orderedBBox = [self orderPointsClockwise:originalBBox];
|
|
747
|
-
mutableDict[@"bbox"] = orderedBBox;
|
|
748
|
-
[orderedSortedBoxes addObject:mutableDict];
|
|
749
|
-
}
|
|
750
|
-
|
|
751
|
-
return orderedSortedBoxes;
|
|
752
|
-
}
|
|
753
|
-
|
|
754
|
-
@end
|