@qvac/ocr-ggml 0.27.1 → 0.27.2

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.
@@ -7,7 +7,7 @@
7
7
  ],
8
8
  "current_versions": [
9
9
  {
10
- "version": "0.27.1"
10
+ "version": "0.27.2"
11
11
  }
12
12
  ],
13
13
  "exported_symbols": [
@@ -1462,7 +1462,7 @@
1462
1462
  "__ZNK2cv5MatOp3addERKNS_7MatExprERKNS_7Scalar_IdEERS1_",
1463
1463
  "_png_set_PLTE",
1464
1464
  "__ZN2cv15ImageCollection4Impl7advanceEv",
1465
- "_png_chunk_report",
1465
+ "__ZN23qvac_lib_infer_ocr_ggml7ocr_fit14inspectOcrGgufERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEPKc",
1466
1466
  "__ZN2cvltERKNS_3MatEd",
1467
1467
  "_png_read_png",
1468
1468
  "_png_destroy_info_struct",
@@ -1470,6 +1470,7 @@
1470
1470
  "_TIFFFieldWriteCount",
1471
1471
  "__ZN2cv7ellipseERKNS_17_InputOutputArrayENS_6Point_IiEENS_5Size_IiEEdddRKNS_7Scalar_IdEEiii",
1472
1472
  "_WebPAnimEncoderNewInternal",
1473
+ "_png_chunk_report",
1473
1474
  "_j12init_1pass_quantizer",
1474
1475
  "__ZN2cv3hal6cmp32fEPKfmS2_mPhmiiPv",
1475
1476
  "__ZN2cv6repeatERKNS_11_InputArrayEiiRKNS_12_OutputArrayE",
@@ -2157,6 +2158,7 @@
2157
2158
  "__ZN2cvngERKNS_7MatExprE",
2158
2159
  "_lzma_mf_bt2_find",
2159
2160
  "__ZNK2cv8FileNodecviEv",
2161
+ "__ZN23qvac_lib_infer_ocr_ggml7ocr_fit12assessOcrFitERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEES9_RKNS_9OcrConfigEy",
2160
2162
  "__ZN5doctr4ggml8pipeline22StepDoctrDetectionGGMLC2ERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEiP19ggml_backend_device",
2161
2163
  "__ZN2cv3Mat5setToERKNS_11_InputArrayES3_",
2162
2164
  "_cvGetRealND",
@@ -3201,14 +3203,13 @@
3201
3203
  "__ZN28qvac_lib_inference_addon_cpp6logger8JsLogger13asyncCallbackEP10uv_async_s",
3202
3204
  "__ZN28qvac_lib_inference_addon_cpp2js11JsAsyncTask13onCloseHandleEP11uv_handle_s",
3203
3205
  "__ZN28qvac_lib_inference_addon_cpp11JsInterface9setLoggerEP8js_env_sP18js_callback_info_s",
3206
+ "__ZN23qvac_lib_infer_ocr_ggml9assessFitEP8js_env_sP18js_callback_info_s",
3204
3207
  "__ZN28qvac_lib_inference_addon_cpp16OutputCallBackJs16jsOutputCallbackEP10uv_async_s",
3205
3208
  "__ZN23qvac_lib_infer_ocr_ggml6runJobEP8js_env_sP18js_callback_info_s",
3206
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm1EEE10__dispatchB8ne190102IONS1_9__variant15__value_visitorIZZN28qvac_lib_inference_addon_cpp9out_handl27JsRuntimeStatsOutputHandlerC1EvENKUlRKNS_6vectorINS_4pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_7variantIJdxEEEEENSG_ISL_EEEEE_clESP_EUlOT_E_EEJRKNS0_6__baseILNS0_6_TraitE0EJdxEEEEEEDcSR_DpT0_",
3207
3209
  "__ZN28qvac_lib_inference_addon_cpp11JsInterface6cancelEP8js_env_sP18js_callback_info_s",
3208
3210
  "__ZZN28qvac_lib_inference_addon_cpp16OutputCallBackJs16drainAndTeardownEPNS0_5StateEbbENUlP11uv_handle_sE_8__invokeES4_",
3209
3211
  "__ZN28qvac_lib_inference_addon_cpp2js11JsAsyncTask10onCompleteEP10uv_async_s",
3210
3212
  "__ZN28qvac_lib_inference_addon_cpp11JsInterface15destroyInstanceEP8js_env_sP18js_callback_info_s",
3211
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm0EEE10__dispatchB8ne190102IONS1_9__variant15__value_visitorIZZN28qvac_lib_inference_addon_cpp9out_handl27JsRuntimeStatsOutputHandlerC1EvENKUlRKNS_6vectorINS_4pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_7variantIJdxEEEEENSG_ISL_EEEEE_clESP_EUlOT_E_EEJRKNS0_6__baseILNS0_6_TraitE0EJdxEEEEEEDcSR_DpT0_",
3212
3213
  "__ZN28qvac_lib_inference_addon_cpp6logger8JsLogger13onEnvTeardownEPv",
3213
3214
  "__ZN28qvac_lib_inference_addon_cpp11JsInterface11loadWeightsEP8js_env_sP18js_callback_info_s",
3214
3215
  "__ZN28qvac_lib_inference_addon_cpp16OutputCallBackJs13onEnvTeardownEPv",
@@ -3233,7 +3234,7 @@
3233
3234
  ],
3234
3235
  "target_info": [
3235
3236
  {
3236
- "min_deployment": "14",
3237
+ "min_deployment": "15",
3237
3238
  "target": "arm64-ios-simulator"
3238
3239
  }
3239
3240
  ]
@@ -7,7 +7,7 @@
7
7
  ],
8
8
  "current_versions": [
9
9
  {
10
- "version": "0.27.1"
10
+ "version": "0.27.2"
11
11
  }
12
12
  ],
13
13
  "exported_symbols": [
@@ -254,10 +254,12 @@
254
254
  "text": {
255
255
  "global": [
256
256
  "__ZN2cv3hal19cvtTwoPlaneYUVtoBGREPKhmS2_mPhmiiibiNS_13AlgorithmHintE",
257
+ "__ZN2cv11FileStorage4openERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEiS9_",
257
258
  "__ZN2cv11FileStorage5writeERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERKNS_3MatE",
258
259
  "_cvAdaptiveThreshold",
259
- "_png_get_y_offset_microns",
260
+ "_jsimd_can_h2v2_downsample",
260
261
  "__ZN2cv11FileStorage5writeERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEx",
262
+ "_png_get_y_offset_microns",
261
263
  "__ZN5doctr4ggml8pipeline22StepDoctrDetectionGGML15extractPolygonsERKN2cv3MatEfiiiiii",
262
264
  "_cvLinearPolar",
263
265
  "__ZN2cv3hal15warpPerspectiveEiPKhmiiPhmiiPKdiiS5_",
@@ -366,6 +368,7 @@
366
368
  "__ZN2cv4UMatC1ERKS0_RKNS_5Rect_IiEE",
367
369
  "__ZN2cv10checkRangeERKNS_11_InputArrayEbPNS_6Point_IiEEdd",
368
370
  "_zlibCompileFlags",
371
+ "_jsimd_ycc_rgb565_convert",
369
372
  "_WebPDemuxPrevFrame",
370
373
  "__ZN2cv15NAryMatIteratorC2EPPKNS_3MatEPPhi",
371
374
  "_inflateReset",
@@ -406,6 +409,7 @@
406
409
  "__ZN2cv3absERKNS_7MatExprE",
407
410
  "__ZNK2cv9Exception4whatEv",
408
411
  "__ZNK2cv16MatConstIterator4lposEv",
412
+ "_jsimd_rgb_gray_convert",
409
413
  "_lzma_lzma2_props_encode",
410
414
  "_WebPAnimDecoderGetDemuxer",
411
415
  "__ZNK23qvac_lib_infer_ocr_ggml8Pipeline12runtimeStatsEv",
@@ -413,8 +417,9 @@
413
417
  "__ZN2cv19connectedComponentsERKNS_11_InputArrayERKNS_12_OutputArrayEiii",
414
418
  "__ZN2cv3Mat19getDefaultAllocatorEv",
415
419
  "_TIFFJPEGIsFullStripRequired",
416
- "_png_set_strip_alpha",
420
+ "_jsimd_can_convsamp",
417
421
  "_lzma_crc64",
422
+ "_png_set_strip_alpha",
418
423
  "__ZN2cv6detail17check_failed_autoEbbRKNS0_12CheckContextE",
419
424
  "__ZNK2cv3PCA7projectERKNS_11_InputArrayE",
420
425
  "__ZNK2cv11_InputArray8channelsEi",
@@ -457,6 +462,7 @@
457
462
  "_jpeg_write_raw_data",
458
463
  "_cvReshape",
459
464
  "_TIFFWriteDirectory",
465
+ "_jsimd_can_encode_mcu_AC_first_prepare",
460
466
  "_png_set_cHRM",
461
467
  "__ZNK2cv8FileNode7isNamedEv",
462
468
  "_cvTranspose",
@@ -496,6 +502,7 @@
496
502
  "_png_get_progressive_ptr",
497
503
  "_png_zalloc",
498
504
  "_png_set_bgr",
505
+ "_jsimd_rgb_ycc_convert",
499
506
  "_cvDCT",
500
507
  "_png_write_pHYs",
501
508
  "__ZNK2cv11FileStorage4Impl16normalizeNodeOfsERmS2_",
@@ -623,6 +630,7 @@
623
630
  "_lzma_index_checks",
624
631
  "__ZN2cv11FileStorage4Impl9closeFileEv",
625
632
  "_cvSetImageCOI",
633
+ "_jsimd_can_h2v2_upsample",
626
634
  "_jinit_forward_dct",
627
635
  "_deflateInit2_",
628
636
  "_png_get_IHDR",
@@ -699,6 +707,7 @@
699
707
  "_cvSVD",
700
708
  "__ZN2cv9softfloatC1Ey",
701
709
  "__ZN2cv11FileStorage4Impl32check_if_write_struct_is_delayedEb",
710
+ "_jsimd_quantize_float",
702
711
  "__ZNK2cv8FileNode5emptyEv",
703
712
  "__ZN2cv4UMat5zerosEiPKiiNS_14UMatUsageFlagsE",
704
713
  "__TIFFSwab64BitData",
@@ -778,6 +787,7 @@
778
787
  "__ZN2cv6detail18check_failed_falseEbRKNS0_12CheckContextE",
779
788
  "_TIFFFreeDirectory",
780
789
  "__ZN2cv11sepFilter2DERKNS_11_InputArrayERKNS_12_OutputArrayEiS2_S2_NS_6Point_IiEEdi",
790
+ "_jsimd_huff_encode_one_block",
781
791
  "_lzma_lz_encoder_memusage",
782
792
  "__ZN2cv15ImageCollection4ImplixEi",
783
793
  "__ZN2cv4UMat4onesEiPKiiNS_14UMatUsageFlagsE",
@@ -795,6 +805,7 @@
795
805
  "_WebPPictureInitInternal",
796
806
  "__ZNK2cv11_InputArray6copyToERKNS_12_OutputArrayE",
797
807
  "__ZNK2cv12_OutputArray6assignERKNS_4UMatE",
808
+ "_jsimd_can_quantize_float",
798
809
  "_deflatePending",
799
810
  "_TIFFYCbCrtoRGB",
800
811
  "__ZNK2cv9SparseMat6copyToERNS_3MatE",
@@ -838,6 +849,7 @@
838
849
  "__ZN2cv6circleERKNS_17_InputOutputArrayENS_6Point_IiEEiRKNS_7Scalar_IdEEiii",
839
850
  "_png_set_longjmp_fn",
840
851
  "_cvKMeans2",
852
+ "_jsimd_h2v1_downsample",
841
853
  "__ZNK2cv11_InputArray4stepEi",
842
854
  "_TIFFOpenOptionsFree",
843
855
  "__ZN2cv11FileStorage4Impl11parseBase64EPciRNS_8FileNodeE",
@@ -862,6 +874,7 @@
862
874
  "_png_write_finish_row",
863
875
  "_cvGetElemType",
864
876
  "__ZNK2cv4UMat6copyToERKNS_12_OutputArrayERKNS_11_InputArrayE",
877
+ "_jsimd_fdct_islow",
865
878
  "_cvBoundingRect",
866
879
  "__ZNK2cv9softfloatltERKS0_",
867
880
  "__ZN2cv6detail17check_failed_autoENS_5Size_IiEES2_RKNS0_12CheckContextE",
@@ -888,6 +901,7 @@
888
901
  "__ZN2cv18getAffineTransformEPKNS_6Point_IfEES3_",
889
902
  "_cvCheckHardwareSupport",
890
903
  "__ZN2cv3hal6exp64fEPKdPdi",
904
+ "_jsimd_h2v1_upsample",
891
905
  "_png_get_pHYs_dpi",
892
906
  "__ZN2cv3MatD2Ev",
893
907
  "__ZN2cv3Mat3eyeENS_5Size_IiEEi",
@@ -956,6 +970,7 @@
956
970
  "__ZN2cv5utils7logging11setLogLevelENS1_8LogLevelE",
957
971
  "_cvFindGraphEdgeByPtr",
958
972
  "__ZNK2cv8FileNode3endEv",
973
+ "_jsimd_fdct_float",
959
974
  "__ZN2cv11FileStorage4Impl13Base64Decoder8readMoreEi",
960
975
  "__TIFFMultiply32",
961
976
  "__ZN2cv4normERKNS_9SparseMatEi",
@@ -1007,6 +1022,7 @@
1007
1022
  "__ZN2cv14PCABackProjectERKNS_11_InputArrayES2_S2_RKNS_12_OutputArrayE",
1008
1023
  "_deflateReset",
1009
1024
  "_cvBoxPoints",
1025
+ "_jsimd_h2v2_merged_upsample",
1010
1026
  "_cvGraphAddEdgeByPtr",
1011
1027
  "__ZNK2cv9softfloatmlERKS0_",
1012
1028
  "_jpeg_enable_lossless",
@@ -1043,9 +1059,10 @@
1043
1059
  "__ZN2cv8integralERKNS_11_InputArrayERKNS_12_OutputArrayEi",
1044
1060
  "_cvSeqInsert",
1045
1061
  "__ZN23qvac_lib_infer_ocr_ggml8PipelineC2ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEES9_NS1_4spanIS8_Lm18446744073709551615EEENS_9OcrConfigE",
1046
- "_png_process_data",
1062
+ "_jsimd_can_rgb_ycc",
1047
1063
  "_png_create_read_struct",
1048
1064
  "_WebPAnimEncoderOptionsInitInternal",
1065
+ "_png_process_data",
1049
1066
  "__ZN2cv3hal12magnitude64fEPKdS2_Pdi",
1050
1067
  "__ZN17OcrBackendsHandleaSEOS_",
1051
1068
  "__ZNK2cv14DefaultDeleterI7CvMatNDEclEPS1_",
@@ -1144,6 +1161,7 @@
1144
1161
  "_TIFFSwabArrayOfTriples",
1145
1162
  "_jinit_input_controller",
1146
1163
  "_png_get_x_offset_pixels",
1164
+ "_jsimd_encode_mcu_AC_first_prepare",
1147
1165
  "__ZN2cv6repeatERKNS_3MatEii",
1148
1166
  "_lzma_index_append",
1149
1167
  "__ZNK2cv9softfloatplERKS0_",
@@ -1213,6 +1231,7 @@
1213
1231
  "_png_create_write_struct",
1214
1232
  "__ZNK2cv12_OutputArray9getMatRefEi",
1215
1233
  "__ZNK2cv11FileStorage9getFormatEv",
1234
+ "_jsimd_can_idct_ifast",
1216
1235
  "__ZNK2cv9SparseMat9convertToERS0_id",
1217
1236
  "_cvCloneSparseMat",
1218
1237
  "_j12init_d_main_controller",
@@ -1281,6 +1300,7 @@
1281
1300
  "_WebPNewInternal",
1282
1301
  "_png_access_version_number",
1283
1302
  "_png_get_chunk_cache_max",
1303
+ "_jsimd_can_idct_float",
1284
1304
  "__ZN5doctr4ggml8pipeline22StepDoctrDetectionGGML11ensureGraphEii",
1285
1305
  "_cvRange",
1286
1306
  "__ZN2cv9SparseMat5eraseEiiPm",
@@ -1369,6 +1389,7 @@
1369
1389
  "_WebPMuxGetAnimationParams",
1370
1390
  "_cvRedirectError",
1371
1391
  "_cvResize",
1392
+ "_jsimd_can_ycc_rgb565",
1372
1393
  "__ZThn8_N23qvac_lib_infer_ocr_ggml8PipelineD1Ev",
1373
1394
  "__ZN2cv22getHardwareFeatureNameEi",
1374
1395
  "_TIFFVSetField",
@@ -1390,6 +1411,7 @@
1390
1411
  "_cvMin",
1391
1412
  "__ZN2cv5utils5trace7details12TraceManagerD1Ev",
1392
1413
  "__ZN2cv12ellipse2PolyENS_6Point_IiEENS_5Size_IiEEiiiiRNSt3__16vectorIS1_NS4_9allocatorIS1_EEEE",
1414
+ "_jsimd_quantize",
1393
1415
  "__ZN2cv16UMatDataAutoLockC2EPNS_8UMatDataES2_",
1394
1416
  "__ZNK2cv12_OutputArray13getHostMemRefEv",
1395
1417
  "__TIFFgetMode",
@@ -1425,6 +1447,7 @@
1425
1447
  "_png_write_tEXt",
1426
1448
  "_lzma_stream_flags_compare",
1427
1449
  "__ZN2cv6invertERKNS_11_InputArrayERKNS_12_OutputArrayEi",
1450
+ "_jsimd_idct_islow",
1428
1451
  "__ZN2cv4UMat3eyeENS_5Size_IiEEiNS_14UMatUsageFlagsE",
1429
1452
  "__ZN2cv5mergeEPKNS_3MatEmRKNS_12_OutputArrayE",
1430
1453
  "__ZN2cv9SparseMat13resizeHashTabEm",
@@ -1560,8 +1583,9 @@
1560
1583
  "__ZNK2cv5MatOp3addERKNS_7MatExprERKNS_7Scalar_IdEERS1_",
1561
1584
  "_png_set_PLTE",
1562
1585
  "__ZN2cv15ImageCollection4Impl7advanceEv",
1563
- "_png_chunk_report",
1586
+ "__ZN23qvac_lib_infer_ocr_ggml7ocr_fit14inspectOcrGgufERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEPKc",
1564
1587
  "__ZN2cvltERKNS_3MatEd",
1588
+ "_png_chunk_report",
1565
1589
  "_png_read_png",
1566
1590
  "_png_destroy_info_struct",
1567
1591
  "__ZN2cv3hal4sqrtEPKfPfi",
@@ -1594,6 +1618,7 @@
1594
1618
  "_cvPtr2D",
1595
1619
  "_TIFFFillTile",
1596
1620
  "__ZN17OcrBackendsHandleD2Ev",
1621
+ "_jsimd_can_h2v1_fancy_upsample",
1597
1622
  "_WebPEncodeLosslessBGRA",
1598
1623
  "__ZN2cv6detail17check_failed_trueEbRKNS0_12CheckContextE",
1599
1624
  "_deflateParams",
@@ -1624,6 +1649,7 @@
1624
1649
  "__ZN2cv11FileStorage4Impl9get_spaceEv",
1625
1650
  "__ZN2cv3hal10invSqrt64fEPKdPdi",
1626
1651
  "_lzma_filter_flags_encode",
1652
+ "_jsimd_can_quantize",
1627
1653
  "__ZN2cv10convexHullERKNS_11_InputArrayERKNS_12_OutputArrayEbb",
1628
1654
  "_TIFFCIELabToXYZ",
1629
1655
  "__ZN2cv4UMatC2EiPKiiRKNS_7Scalar_IdEENS_14UMatUsageFlagsE",
@@ -1671,6 +1697,7 @@
1671
1697
  "_png_get_pixels_per_inch",
1672
1698
  "_png_do_packswap",
1673
1699
  "_cvPolyLine",
1700
+ "_jsimd_h2v2_fancy_upsample",
1674
1701
  "__ZN2cv8FileNodeC2EPKNS_11FileStorageEmm",
1675
1702
  "__ZN7easyocr4ggml8pipeline22StepDetectionInferenceC2ERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEfiSB_iP19ggml_backend_device",
1676
1703
  "_adler32_z",
@@ -1703,6 +1730,7 @@
1703
1730
  "_j12init_d_diff_controller",
1704
1731
  "__ZN2cvmlERKNS_7MatExprEd",
1705
1732
  "_cvDrawContours",
1733
+ "_jsimd_idct_4x4",
1706
1734
  "_SharpYuvGetVersion",
1707
1735
  "__ZN2cv3hal13addRNGBias32fEPfPKfi",
1708
1736
  "__ZN2cv15NAryMatIteratorC1EPPKNS_3MatEPPhi",
@@ -1746,6 +1774,7 @@
1746
1774
  "__ZN2cv11FileStorage4Impl4getsEm",
1747
1775
  "_png_get_x_offset_microns",
1748
1776
  "__ZN2cv4UMatC2ENS_5Size_IiEEiNS_14UMatUsageFlagsE",
1777
+ "_jsimd_can_h2v2_merged_upsample",
1749
1778
  "_lzma_simple_arm_decoder_init",
1750
1779
  "_deflateSetDictionary",
1751
1780
  "__ZN2cv10softdoubleC1Ei",
@@ -1774,6 +1803,7 @@
1774
1803
  "__ZN7easyocr4ggml8pipeline24validateUnknownLanguagesENSt3__14spanIKNS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEELm18446744073709551615EEE",
1775
1804
  "_TIFFIsCODECConfigured",
1776
1805
  "__ZN2cv3logERKNS_9softfloatE",
1806
+ "_jsimd_can_idct_4x4",
1777
1807
  "_jpeg_idct_float",
1778
1808
  "_cvReleaseStructuringElement",
1779
1809
  "__ZN2cv3hal24warpPerspectiveBlocklineEPKdPsS3_dddi",
@@ -1808,6 +1838,7 @@
1808
1838
  "_TIFFDeferStrileArrayWriting",
1809
1839
  "_cvGetImage",
1810
1840
  "__ZN2cv11FileStorageC1Ev",
1841
+ "_jsimd_idct_2x2",
1811
1842
  "_lzma_index_stream_count",
1812
1843
  "_cvEigenVV",
1813
1844
  "_jpeg_abort_compress",
@@ -1868,6 +1899,7 @@
1868
1899
  "_lzma_lz_decoder_memusage",
1869
1900
  "__ZN7easyocr4ggml8pipeline15StepBoundingBox21createSegmentationMapEN2cv5Size_IiEEi",
1870
1901
  "_crc32_combine_gen",
1902
+ "_jsimd_convsamp_float",
1871
1903
  "_lzma_simple_arm64_encoder_init",
1872
1904
  "__ZN2cv6formatEPKcz",
1873
1905
  "_jpeg_read_header",
@@ -1901,6 +1933,7 @@
1901
1933
  "_png_error",
1902
1934
  "_jinit_d_coef_controller",
1903
1935
  "__ZN2cv3Mat6createEiii",
1936
+ "_jsimd_can_idct_islow",
1904
1937
  "__ZN2cvdvERKNS_3MatERKNS_7MatExprE",
1905
1938
  "__ZN2cvdvERKNS_7MatExprES2_",
1906
1939
  "__ZN2cv4UMatC1ERKS0_PKNS_5RangeE",
@@ -1919,6 +1952,7 @@
1919
1952
  "__ZN2cv12getThreadNumEv",
1920
1953
  "_png_get_header_version",
1921
1954
  "__ZN2cv16TLSDataContainerD2Ev",
1955
+ "_jsimd_can_fdct_ifast",
1922
1956
  "__ZN2cv11FileStorage4Impl14endWriteStructEv",
1923
1957
  "_png_set_mDCV_fixed",
1924
1958
  "__ZN2cv3Mat19setDefaultAllocatorEPNS_12MatAllocatorE",
@@ -2015,6 +2049,7 @@
2015
2049
  "__ZN2cv3hal7normL1_EPKhS2_i",
2016
2050
  "_png_push_read_chunk",
2017
2051
  "_jpeg12_idct_4x4",
2052
+ "_jsimd_idct_float",
2018
2053
  "_jpeg_alloc_quant_table",
2019
2054
  "__ZN2cvmiERKNS_7MatExprERKNS_3MatE",
2020
2055
  "_TIFFCurrentDirectory",
@@ -2081,6 +2116,7 @@
2081
2116
  "__ZN2cv9SparseMat7releaseEv",
2082
2117
  "__tr_flush_block",
2083
2118
  "_j16init_downsampler",
2119
+ "_jsimd_can_rgb_gray",
2084
2120
  "__ZN2cvgtEdRKNS_3MatE",
2085
2121
  "_cvClearND",
2086
2122
  "__ZN2cv3hal6sub16uEPKtmS2_mPtmiiPv",
@@ -2231,6 +2267,7 @@
2231
2267
  "__ZN2cvngERKNS_7MatExprE",
2232
2268
  "_lzma_mf_bt2_find",
2233
2269
  "__ZNK2cv8FileNodecviEv",
2270
+ "__ZN23qvac_lib_infer_ocr_ggml7ocr_fit12assessOcrFitERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEES9_RKNS_9OcrConfigEy",
2234
2271
  "__ZN5doctr4ggml8pipeline22StepDoctrDetectionGGMLC2ERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEiP19ggml_backend_device",
2235
2272
  "__ZN2cv3Mat5setToERKNS_11_InputArrayES3_",
2236
2273
  "_cvGetRealND",
@@ -2274,8 +2311,10 @@
2274
2311
  "_TIFFCreateDirectory",
2275
2312
  "__ZN2cv15ImageCollection4ImplC2ERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEi",
2276
2313
  "__ZN34qvac_lib_infer_ggml_classification5graph12ComputeGraphC2EOS1_",
2314
+ "_jsimd_can_h2v1_merged_upsample",
2277
2315
  "_png_write_gAMA_fixed",
2278
2316
  "__ZN2cv15NAryMatIteratorppEi",
2317
+ "_jsimd_idct_ifast",
2279
2318
  "_cvSaveMemStoragePos",
2280
2319
  "__ZN2cv4readERKNS_8FileNodeERNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_",
2281
2320
  "_cvRelease",
@@ -2349,6 +2388,7 @@
2349
2388
  "__ZN7easyocr4ggml3ops17conv_2d_bias_reluEP12ggml_contextP11ggml_tensorS5_S5_iiiiiibb",
2350
2389
  "_gzungetc",
2351
2390
  "__ZN2cv4UMat6createENS_5Size_IiEEiNS_14UMatUsageFlagsE",
2391
+ "_jsimd_can_h2v2_fancy_upsample",
2352
2392
  "_png_write_chunk_data",
2353
2393
  "__ZN7easyocr4ggml8pipeline17StepRecognizeText21ensureRecognizerGraphEiiim",
2354
2394
  "_png_set_keep_unknown_chunks",
@@ -2443,6 +2483,7 @@
2443
2483
  "_WebPAnimDecoderGetInfo",
2444
2484
  "__ZNK2cv12_OutputArray15getGpuMatVecRefEv",
2445
2485
  "__ZNK2cv10softdoublecvNS_9softfloatEEv",
2486
+ "_jsimd_can_h2v1_upsample",
2446
2487
  "_jpeg_default_colorspace",
2447
2488
  "__ZN2cv9ExceptionD1Ev",
2448
2489
  "_cvStartWriteSeq",
@@ -2499,6 +2540,7 @@
2499
2540
  "__ZN2cv3hal5add8sEPKamS2_mPamiiPv",
2500
2541
  "_lzma_version_number",
2501
2542
  "_jinit_c_master_control",
2543
+ "_jsimd_can_ycc_rgb",
2502
2544
  "__ZNK2cv4UMat8ndoffsetEPm",
2503
2545
  "_WebPValidateConfig",
2504
2546
  "_png_set_eXIf",
@@ -2508,6 +2550,7 @@
2508
2550
  "__ZN2cv3hal14cartToPolar32fEPKfS2_PfS3_ib",
2509
2551
  "__ZN2cv10softdoubleC1Ej",
2510
2552
  "_TIFFCurrentTile",
2553
+ "_jsimd_h2v1_merged_upsample",
2511
2554
  "_jpeg_set_linear_quality",
2512
2555
  "__ZN2cv3hal8CholeskyEPdmiS1_mi",
2513
2556
  "__ZN2cv11FileStorage7releaseEv",
@@ -2614,6 +2657,7 @@
2614
2657
  "__ZN2cv5utils5trace7details12TraceManagerD2Ev",
2615
2658
  "__ZN2cv11_InputArrayC1ERKNS_7MatExprE",
2616
2659
  "__ZN2cv11RNG_MT19937cvfEv",
2660
+ "_jsimd_h2v2_downsample",
2617
2661
  "__ZN2cv9arcLengthERKNS_11_InputArrayEb",
2618
2662
  "__ZN2cv7vconcatEPKNS_3MatEmRKNS_12_OutputArrayE",
2619
2663
  "__ZN5doctr4ggml8pipeline24StepDoctrRecognitionGGML17packCropIntoBatchERKN2cv3MatERNSt3__16vectorIfNS7_9allocatorIfEEEEi",
@@ -2694,6 +2738,7 @@
2694
2738
  "_lzma_bcj_x86_encode",
2695
2739
  "_cvSetReal3D",
2696
2740
  "__TIFFsetShortArray",
2741
+ "_jsimd_can_convsamp_float",
2697
2742
  "__ZNK2cv5MatOp8multiplyERKNS_7MatExprEdRS1_",
2698
2743
  "_png_crc_read",
2699
2744
  "_png_crc_finish",
@@ -2746,6 +2791,7 @@
2746
2791
  "_TIFFWriteEncodedTile",
2747
2792
  "_TIFFWriteRawStrip",
2748
2793
  "_deflate",
2794
+ "_jsimd_can_fdct_float",
2749
2795
  "__ZNK2cv12_OutputArray4moveERNS_3MatE",
2750
2796
  "_lzma_lzma2_decoder_init",
2751
2797
  "__ZN2cv5writeERNS_11FileStorageERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEi",
@@ -2800,6 +2846,7 @@
2800
2846
  "__ZN2cv3hal6cmp16sEPKsmS2_mPhmiiPv",
2801
2847
  "_TIFFClientOpenExt",
2802
2848
  "_jinit_2pass_quantizer",
2849
+ "_jsimd_can_idct_2x2",
2803
2850
  "__ZNK2cv8FileNode5isSeqEv",
2804
2851
  "__ZN2cvmiERKNS_7Scalar_IdEERKNS_3MatE",
2805
2852
  "_TIFFSetFileno",
@@ -2864,11 +2911,12 @@
2864
2911
  "_gzgetc",
2865
2912
  "__ZN2cv15haveImageWriterERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE",
2866
2913
  "__ZNK2cv8FileNode7readRawERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEPvm",
2867
- "_cvGetOptimalDFTSize",
2914
+ "_jsimd_fdct_ifast",
2868
2915
  "__ZN2cv3PCAC2ERKNS_11_InputArrayES3_ii",
2869
2916
  "_lzma_filter_flags_decode",
2870
2917
  "_cvMax",
2871
2918
  "_png_set_rgb_to_gray",
2919
+ "_cvGetOptimalDFTSize",
2872
2920
  "__ZN2cv8tempfileEPKc",
2873
2921
  "__ZN2cv3MatC1EiiiRKNS_7Scalar_IdEE",
2874
2922
  "__ZN2cv5utils5trace7details6RegionC1ERKNS3_21LocationStaticStorageE",
@@ -2901,6 +2949,7 @@
2901
2949
  "_png_set_quantize",
2902
2950
  "__ZN2cv11bitwise_xorERKNS_11_InputArrayES2_RKNS_12_OutputArrayES2_",
2903
2951
  "__ZN2cv11transposeNDERKNS_11_InputArrayERKNSt3__16vectorIiNS3_9allocatorIiEEEERKNS_12_OutputArrayE",
2952
+ "_jsimd_convsamp",
2904
2953
  "__ZN7easyocr4ggml15CrnnGen2Weights6build_ERKNS0_10GgufLoaderEP12ggml_backend",
2905
2954
  "__ZN2cv4readERKNS_8FileNodeERii",
2906
2955
  "_png_chunk_unknown_handling",
@@ -2957,6 +3006,7 @@
2957
3006
  "_inflateUndermine",
2958
3007
  "_WebPInitDecoderConfigInternal",
2959
3008
  "__ZN2cv4readERKNS_8FileNodeERNS_6DMatchERKS3_",
3009
+ "_jsimd_ycc_rgb_convert",
2960
3010
  "_cvReleaseMemStorage",
2961
3011
  "_cvSeqSlice",
2962
3012
  "__ZN2cv11RNG_MT19937C1Ej",
@@ -2985,6 +3035,7 @@
2985
3035
  "__ZN2cv3maxERKNS_3MatES2_RS0_",
2986
3036
  "_gzerror",
2987
3037
  "__ZN7easyocr4ggml10GgufLoaderD2Ev",
3038
+ "_jsimd_can_encode_mcu_AC_refine_prepare",
2988
3039
  "__ZN2cv15ImageCollectionC1Ev",
2989
3040
  "_cvGetTickFrequency",
2990
3041
  "_png_push_process_row",
@@ -3094,10 +3145,10 @@
3094
3145
  "__ZN2cv3Mat15getStdAllocatorEv",
3095
3146
  "_inflate_fast",
3096
3147
  "__ZN2cv8FileNode6isFlowEi",
3097
- "_png_process_data_skip",
3098
3148
  "_png_do_strip_channel",
3099
- "__ZNK2cv7MatExpr5crossERKNS_3MatE",
3149
+ "_png_process_data_skip",
3100
3150
  "_png_get_eXIf_1",
3151
+ "__ZNK2cv7MatExpr5crossERKNS_3MatE",
3101
3152
  "_png_get_mDCV_fixed",
3102
3153
  "__ZN2cv5instr8getFlagsEv",
3103
3154
  "_cvPrevTreeNode",
@@ -3108,6 +3159,7 @@
3108
3159
  "_png_chunk_error",
3109
3160
  "_jpeg_idct_3x3",
3110
3161
  "__ZNK2cv7MatExprclERKNS_5RangeES3_",
3162
+ "_jsimd_encode_mcu_AC_refine_prepare",
3111
3163
  "__Z7cvTruncRKN2cv10softdoubleE",
3112
3164
  "__ZN2cv10fitEllipseERKNS_11_InputArrayE",
3113
3165
  "__ZN2cv3MatC1ERKNSt3__16vectorIiNS1_9allocatorIiEEEEiPvPKm",
@@ -3161,6 +3213,7 @@
3161
3213
  "__ZN2cv15ImageCollection3endEv",
3162
3214
  "_jpeg_idct_10x10",
3163
3215
  "__ZNK2cv3Mat5step1Ei",
3216
+ "_jsimd_can_huff_encode_one_block",
3164
3217
  "__ZN2cv3hal8gemm64fcEPKdmS2_mdS2_mdPdmiiii",
3165
3218
  "_j12init_d_coef_controller",
3166
3219
  "_png_write_sCAL_s",
@@ -3175,6 +3228,7 @@
3175
3228
  "_png_get_cLLI_fixed",
3176
3229
  "_TIFFScanlineSize",
3177
3230
  "__ZN2cv3cosERKNS_10softdoubleE",
3231
+ "_jsimd_can_fdct_islow",
3178
3232
  "__tr_tally",
3179
3233
  "__ZN2cv3hal8recip16sEPKsmS2_mPsmiiPv",
3180
3234
  "_WebPMuxNumChunks",
@@ -3198,10 +3252,12 @@
3198
3252
  "__TIFFsetLongArrayExt",
3199
3253
  "__ZN2cv4UMatC1EiPKiiNS_14UMatUsageFlagsE",
3200
3254
  "_cvBackProjectPCA",
3201
- "_lzma_simple_sparc_encoder_init",
3255
+ "_jsimd_can_h2v1_downsample",
3202
3256
  "__ZN2cv5utils10BufferArea6commitEv",
3257
+ "_lzma_simple_sparc_encoder_init",
3203
3258
  "_j16init_color_deconverter",
3204
3259
  "_png_get_cHRM_fixed",
3260
+ "_jsimd_h2v1_fancy_upsample",
3205
3261
  "__ZN2cv3minEdRKNS_3MatE",
3206
3262
  "__ZN2cvmiERKNS_3MatERKNS_7Scalar_IdEE",
3207
3263
  "_TIFFYCbCrToRGBInit",
@@ -3226,7 +3282,7 @@
3226
3282
  "__ZN5doctr4ggml8pipeline24StepDoctrRecognitionGGML7processENS1_24StepDoctrDetectionOutputEPKNSt3__16atomicIbEE",
3227
3283
  "_cvSeqPushFront",
3228
3284
  "__ZN5doctr4ggml8pipeline22StepDoctrDetectionGGMLD2Ev",
3229
- "__ZN2cv11FileStorage4openERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEiS9_"
3285
+ "_jsimd_h2v2_upsample"
3230
3286
  ],
3231
3287
  "weak": [
3232
3288
  "__ZZZN28qvac_lib_inference_addon_cpp16OutputCallBackJs26initializeProcessingThreadENSt3__110shared_ptrINS_11OutputQueueEEEENKUlvE_clEvENUlP11uv_handle_sE_8__invokeES7_",
@@ -3237,14 +3293,13 @@
3237
3293
  "__ZN28qvac_lib_inference_addon_cpp6logger8JsLogger13asyncCallbackEP10uv_async_s",
3238
3294
  "__ZN28qvac_lib_inference_addon_cpp2js11JsAsyncTask13onCloseHandleEP11uv_handle_s",
3239
3295
  "__ZN28qvac_lib_inference_addon_cpp11JsInterface9setLoggerEP8js_env_sP18js_callback_info_s",
3296
+ "__ZN23qvac_lib_infer_ocr_ggml9assessFitEP8js_env_sP18js_callback_info_s",
3240
3297
  "__ZN28qvac_lib_inference_addon_cpp16OutputCallBackJs16jsOutputCallbackEP10uv_async_s",
3241
3298
  "__ZN23qvac_lib_infer_ocr_ggml6runJobEP8js_env_sP18js_callback_info_s",
3242
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm1EEE10__dispatchB8ne190102IONS1_9__variant15__value_visitorIZZN28qvac_lib_inference_addon_cpp9out_handl27JsRuntimeStatsOutputHandlerC1EvENKUlRKNS_6vectorINS_4pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_7variantIJdxEEEEENSG_ISL_EEEEE_clESP_EUlOT_E_EEJRKNS0_6__baseILNS0_6_TraitE0EJdxEEEEEEDcSR_DpT0_",
3243
3299
  "__ZN28qvac_lib_inference_addon_cpp11JsInterface6cancelEP8js_env_sP18js_callback_info_s",
3244
3300
  "__ZZN28qvac_lib_inference_addon_cpp16OutputCallBackJs16drainAndTeardownEPNS0_5StateEbbENUlP11uv_handle_sE_8__invokeES4_",
3245
3301
  "__ZN28qvac_lib_inference_addon_cpp2js11JsAsyncTask10onCompleteEP10uv_async_s",
3246
3302
  "__ZN28qvac_lib_inference_addon_cpp11JsInterface15destroyInstanceEP8js_env_sP18js_callback_info_s",
3247
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm0EEE10__dispatchB8ne190102IONS1_9__variant15__value_visitorIZZN28qvac_lib_inference_addon_cpp9out_handl27JsRuntimeStatsOutputHandlerC1EvENKUlRKNS_6vectorINS_4pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_7variantIJdxEEEEENSG_ISL_EEEEE_clESP_EUlOT_E_EEJRKNS0_6__baseILNS0_6_TraitE0EJdxEEEEEEDcSR_DpT0_",
3248
3303
  "__ZN28qvac_lib_inference_addon_cpp6logger8JsLogger13onEnvTeardownEPv",
3249
3304
  "__ZN28qvac_lib_inference_addon_cpp11JsInterface11loadWeightsEP8js_env_sP18js_callback_info_s",
3250
3305
  "__ZN28qvac_lib_inference_addon_cpp16OutputCallBackJs13onEnvTeardownEPv",
@@ -3269,7 +3324,7 @@
3269
3324
  ],
3270
3325
  "target_info": [
3271
3326
  {
3272
- "min_deployment": "14",
3327
+ "min_deployment": "15",
3273
3328
  "target": "x86_64-ios-simulator"
3274
3329
  }
3275
3330
  ]
@@ -0,0 +1,108 @@
1
+ 'use strict'
2
+
3
+ const test = require('brittle')
4
+ const path = require('bare-path')
5
+ const { assessFit } = require('../..')
6
+ const { ensureModelPath, ensureDoctrModels, platform } = require('./utils')
7
+
8
+ const gpuBackend = platform === 'darwin' || platform === 'ios' ? 'metal' : 'vulkan'
9
+
10
+ test('assessFit reads both EasyOCR model descriptions without loading an image', async (t) => {
11
+ const pathDetector = path.resolve(await ensureModelPath('detector_craft'))
12
+ const pathRecognizer = path.resolve(await ensureModelPath('recognizer_latin'))
13
+ const fit = assessFit({ pathDetector, pathRecognizer, backendDevice: 'cpu' })
14
+
15
+ t.ok(['fits', 'does-not-fit', 'error'].includes(fit.status))
16
+ t.is(fit.deviceName, 'CPU')
17
+ t.ok(fit.weightsBytes > 0)
18
+ t.is(fit.hostBytes, fit.weightsBytes)
19
+ t.is(fit.deviceBytes, 0)
20
+ for (const key of [
21
+ 'weightsBytes',
22
+ 'hostBytes',
23
+ 'deviceBytes',
24
+ 'deviceFreeBytes',
25
+ 'deviceTotalBytes'
26
+ ]) {
27
+ t.ok(Number.isSafeInteger(fit[key]) && fit[key] >= 0, `${key} is a non-negative safe integer`)
28
+ }
29
+ t.ok(fit.report.includes('excludes image and inference-graph memory'))
30
+ if (fit.status === 'fits') t.is(fit.reason, 'weights-fit')
31
+ else if (fit.status === 'does-not-fit') t.is(fit.reason, 'source-weights-exceed-memory')
32
+ else t.ok(['uncertain', 'device-memory-unavailable'].includes(fit.reason))
33
+
34
+ const reserved = assessFit({
35
+ pathDetector,
36
+ pathRecognizer,
37
+ backendDevice: 'cpu',
38
+ marginBytes: Number.MAX_SAFE_INTEGER
39
+ })
40
+ t.is(reserved.status, 'error', 'an unusably large margin cannot produce a fit verdict')
41
+ t.ok(['uncertain', 'device-memory-unavailable'].includes(reserved.reason))
42
+ })
43
+
44
+ test('assessFit returns model-unreadable for a missing recognizer', async (t) => {
45
+ const pathDetector = path.resolve(await ensureModelPath('detector_craft'))
46
+ const fit = assessFit({
47
+ pathDetector,
48
+ pathRecognizer: path.join(pathDetector, 'missing-recognizer.gguf')
49
+ })
50
+ t.is(fit.status, 'error')
51
+ t.is(fit.reason, 'model-unreadable')
52
+ })
53
+
54
+ test('assessFit uses the requested gpuDevice when selecting a backend', async (t) => {
55
+ const pathDetector = path.resolve(await ensureModelPath('detector_craft'))
56
+ const pathRecognizer = path.resolve(await ensureModelPath('recognizer_latin'))
57
+ const request = { pathDetector, pathRecognizer, backendDevice: gpuBackend }
58
+ const automatic = assessFit(request)
59
+ const explicit = assessFit({ ...request, gpuDevice: 9999 })
60
+
61
+ t.is(explicit.deviceName, 'CPU', 'out-of-range GPU index falls back to CPU')
62
+ t.is(explicit.deviceBytes, 0)
63
+ if (automatic.deviceName !== 'CPU') {
64
+ t.ok(explicit.deviceName !== automatic.deviceName, 'explicit GPU index changes placement')
65
+ }
66
+ })
67
+
68
+ test('assessFit recognizes actual DocTR detector and CPU-assist placement', async (t) => {
69
+ const models = await ensureDoctrModels()
70
+ if (!models) {
71
+ t.pass('DocTR models are unavailable on this device')
72
+ return
73
+ }
74
+ const pathDetector = path.resolve(models.db_mobilenet_v3_large)
75
+ const pathRecognizer = path.resolve(models.crnn_mobilenet_v3_small)
76
+ const request = {
77
+ pathDetector,
78
+ pathRecognizer,
79
+ pipelineType: 'doctr',
80
+ backendDevice: gpuBackend,
81
+ detectionBackendDevice: gpuBackend,
82
+ recognizerCpuAssist: false
83
+ }
84
+ const singleDevice = assessFit(request)
85
+ t.ok(singleDevice.weightsBytes > 0, 'DocTR model metadata was read')
86
+ t.ok(singleDevice.deviceName, 'DocTR backend was selected')
87
+ t.ok(
88
+ singleDevice.reason !== 'unsupported-config',
89
+ 'matching detector and recognizer devices are supported'
90
+ )
91
+
92
+ if (singleDevice.deviceName === 'CPU') {
93
+ t.pass('GPU unavailable; split-device checks require a GPU')
94
+ return
95
+ }
96
+
97
+ const assisted = assessFit({ ...request, recognizerCpuAssist: true })
98
+ t.is(assisted.status, 'error')
99
+ t.is(assisted.reason, 'unsupported-config', 'GPU recognition with CPU assist is split')
100
+
101
+ const splitDetector = assessFit({
102
+ ...request,
103
+ backendDevice: 'cpu',
104
+ detectionBackendDevice: gpuBackend
105
+ })
106
+ t.is(splitDetector.status, 'error')
107
+ t.is(splitDetector.reason, 'unsupported-config', 'CPU recognition with GPU detection is split')
108
+ })