aait 2.0.0.1__tar.gz → 2.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. {aait-2.0.0.1 → aait-2.0.2}/PKG-INFO +1 -1
  2. {aait-2.0.0.1 → aait-2.0.2}/aait.egg-info/PKG-INFO +1 -1
  3. {aait-2.0.0.1 → aait-2.0.2}/aait.egg-info/SOURCES.txt +0 -18
  4. {aait-2.0.0.1 → aait-2.0.2}/setup.py +3 -2
  5. aait-2.0.0.1/orangecontrib/ALGORITHM/__init__.py +0 -0
  6. aait-2.0.0.1/orangecontrib/ALGORITHM/widgets/__init__.py +0 -19
  7. aait-2.0.0.1/orangecontrib/API/__init__.py +0 -0
  8. aait-2.0.0.1/orangecontrib/API/widgets/__init__.py +0 -19
  9. aait-2.0.0.1/orangecontrib/IMG4IT/__init__.py +0 -0
  10. aait-2.0.0.1/orangecontrib/IMG4IT/utils/__init__.py +0 -0
  11. aait-2.0.0.1/orangecontrib/IMG4IT/widgets/OWConvertImages.py +0 -131
  12. aait-2.0.0.1/orangecontrib/IMG4IT/widgets/OWPaddleOCR.py +0 -213
  13. aait-2.0.0.1/orangecontrib/IMG4IT/widgets/__init__.py +0 -18
  14. aait-2.0.0.1/orangecontrib/IMG4IT/widgets/designer/__init__.py +0 -0
  15. aait-2.0.0.1/orangecontrib/IMG4IT/widgets/icons/__init__.py +0 -0
  16. aait-2.0.0.1/orangecontrib/IMG4IT/widgets/icons_dev/__init__.py +0 -0
  17. aait-2.0.0.1/orangecontrib/LLM_INTEGRATION/__init__.py +0 -0
  18. aait-2.0.0.1/orangecontrib/LLM_INTEGRATION/widgets/__init__.py +0 -19
  19. aait-2.0.0.1/orangecontrib/LLM_MODELS/__init__.py +0 -0
  20. aait-2.0.0.1/orangecontrib/LLM_MODELS/widgets/__init__.py +0 -19
  21. aait-2.0.0.1/orangecontrib/TOOLBOX/__init__.py +0 -0
  22. aait-2.0.0.1/orangecontrib/TOOLBOX/widgets/__init__.py +0 -19
  23. {aait-2.0.0.1 → aait-2.0.2}/License.txt +0 -0
  24. {aait-2.0.0.1 → aait-2.0.2}/aait.egg-info/dependency_links.txt +0 -0
  25. {aait-2.0.0.1 → aait-2.0.2}/aait.egg-info/entry_points.txt +0 -0
  26. {aait-2.0.0.1 → aait-2.0.2}/aait.egg-info/namespace_packages.txt +0 -0
  27. {aait-2.0.0.1 → aait-2.0.2}/aait.egg-info/requires.txt +0 -0
  28. {aait-2.0.0.1 → aait-2.0.2}/aait.egg-info/top_level.txt +0 -0
  29. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/__init__.py +0 -0
  30. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/SignalReceiver.py +0 -0
  31. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/__init__.py +0 -0
  32. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/audit_widget.py +0 -0
  33. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (2).TIF +0 -0
  34. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (3).TIF +0 -0
  35. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (4).TIF +0 -0
  36. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0001.csv +0 -0
  37. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0002.csv +0 -0
  38. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0003.csv +0 -0
  39. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dynamic_results.py +0 -0
  40. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/test_all_widgets.py +0 -0
  41. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/test_server.py +0 -0
  42. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_4all.py +0 -0
  43. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_chunking.py +0 -0
  44. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_edit_table.py +0 -0
  45. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_mpnet_create_embeddings.py +0 -0
  46. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_optimisation.py +0 -0
  47. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_optimisationselection.py +0 -0
  48. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_powfactory.py +0 -0
  49. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_queryllm.py +0 -0
  50. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_spacy_md_fr_lemmatizer.py +0 -0
  51. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_traduction.py +0 -0
  52. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widgets_model.py +0 -0
  53. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/encapsulation/__init__.py +0 -0
  54. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py +0 -0
  55. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll +0 -0
  56. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/GPT4ALL.py +0 -0
  57. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/GPT4ALL_killer.py +0 -0
  58. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/MergeBaseLora.py +0 -0
  59. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/SERV_kill_workflow.py +0 -0
  60. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/SERV_requests.py +0 -0
  61. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/SERV_start_workflow.py +0 -0
  62. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/Tutorial_Finetuning.py +0 -0
  63. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/Tutorial_TestFinetuning.py +0 -0
  64. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/__init__.py +0 -0
  65. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/answers.py +0 -0
  66. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/chunking.py +0 -0
  67. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/embeddings.py +0 -0
  68. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/finetuning.py +0 -0
  69. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/functions_DatasetGeneration.py +0 -0
  70. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/functions_Finetuning.py +0 -0
  71. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/lemmes.py +0 -0
  72. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/lmstudio.py +0 -0
  73. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/main_DatasetGeneration.py +0 -0
  74. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/main_Finetuning.py +0 -0
  75. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/process_documents.py +0 -0
  76. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/prompt_management.py +0 -0
  77. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/quickpy.py +0 -0
  78. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/test.py +0 -0
  79. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/test_functions.py +0 -0
  80. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/translations.py +0 -0
  81. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/optimiser/__init__.py +0 -0
  82. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/optimiser/optuna_multi.py +0 -0
  83. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/CheckMetaData.py +0 -0
  84. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/MetManagement.py +0 -0
  85. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/SimpleDialogQt.py +0 -0
  86. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/__init__.py +0 -0
  87. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/aait_repo_file.py +0 -0
  88. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/check_data_in.py +0 -0
  89. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/delta_local_shared_fodler.py +0 -0
  90. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/import_uic.py +0 -0
  91. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/initialize_from_ini.py +0 -0
  92. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/mac_utils.py +0 -0
  93. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/shared_functions.py +0 -0
  94. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/shared_variables.py +0 -0
  95. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/subprocess_management.py +0 -0
  96. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/thread_management.py +0 -0
  97. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/tools/__init__.py +0 -0
  98. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/tools/change_owcorpus.py +0 -0
  99. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py +0 -0
  100. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/tools/first_time_check.py +0 -0
  101. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/tools/owcorpus_ok.txt +0 -0
  102. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/windows_utils.py +0 -0
  103. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWAAITResourcesManager.py +0 -0
  104. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWApplyRules.py +0 -0
  105. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWCN2rule_view.py +0 -0
  106. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWChunking.py +0 -0
  107. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWConcatRules.py +0 -0
  108. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWConverseLLM.py +0 -0
  109. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWCreateEmbeddings.py +0 -0
  110. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWDisplayMD.py +0 -0
  111. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWEditTable.py +0 -0
  112. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWEndLoop.py +0 -0
  113. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWExecuteScript.py +0 -0
  114. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWExtraChunks.py +0 -0
  115. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWExtractTokens.py +0 -0
  116. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWFileWithPath.py +0 -0
  117. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWGenerateQuestions.py +0 -0
  118. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWGenerateSynthesis.py +0 -0
  119. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWInputSelector.py +0 -0
  120. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWKeywords.py +0 -0
  121. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWLLM4ALL.py +0 -0
  122. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWLMStudio.py +0 -0
  123. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWLanguageDetection.py +0 -0
  124. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWLemmatizer.py +0 -0
  125. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py +0 -0
  126. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Falcon.py +0 -0
  127. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py +0 -0
  128. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py +0 -0
  129. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_MPNET.py +0 -0
  130. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Mistral.py +0 -0
  131. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Qwen.py +0 -0
  132. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py +0 -0
  133. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Qwen2_5_32B.py +0 -0
  134. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py +0 -0
  135. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py +0 -0
  136. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py +0 -0
  137. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Solar.py +0 -0
  138. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_SolarUncensored.py +0 -0
  139. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_EN.py +0 -0
  140. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_FR.py +0 -0
  141. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWOptimisation.py +0 -0
  142. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWOptimisationSelection.py +0 -0
  143. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWOptimisationSendScore.py +0 -0
  144. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py +0 -0
  145. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWQueryLLM.py +0 -0
  146. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWRandomData.py +0 -0
  147. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWReranking.py +0 -0
  148. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py +0 -0
  149. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWStartLoop.py +0 -0
  150. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWTable2Corpus.py +0 -0
  151. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWTranslation.py +0 -0
  152. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWTrigger.py +0 -0
  153. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/POW_Wfactory.py +0 -0
  154. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/__init__.py +0 -0
  155. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +0 -0
  156. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui +0 -0
  157. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +0 -0
  158. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owapplyrules.ui +0 -0
  159. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owchunking.ui +0 -0
  160. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owconcatrules.ui +0 -0
  161. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owconversellm.ui +0 -0
  162. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owembeddings.ui +0 -0
  163. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owendloop.ui +0 -0
  164. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +0 -0
  165. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +0 -0
  166. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owextracttokens.ui +0 -0
  167. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +0 -0
  168. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +0 -0
  169. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +0 -0
  170. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owkeyword.ui +0 -0
  171. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +0 -0
  172. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +0 -0
  173. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owllm4all.ui +0 -0
  174. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owloadworkflow.ui +0 -0
  175. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui +0 -0
  176. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +0 -0
  177. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +0 -0
  178. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +0 -0
  179. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +0 -0
  180. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +0 -0
  181. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +0 -0
  182. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +0 -0
  183. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +0 -0
  184. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +0 -0
  185. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +0 -0
  186. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui +0 -0
  187. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +0 -0
  188. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +0 -0
  189. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owreranking.ui +0 -0
  190. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owstartloop.ui +0 -0
  191. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +0 -0
  192. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owtranslation.ui +0 -0
  193. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owtrigger.ui +0 -0
  194. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/CN2RuleViewer.svg +0 -0
  195. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/MDViewer.png +0 -0
  196. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/Mistral.png +0 -0
  197. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/apply_rules.svg +0 -0
  198. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/category.svg +0 -0
  199. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/dark_green.txt +0 -0
  200. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/de.png +0 -0
  201. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/documents.png +0 -0
  202. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/endloop.png +0 -0
  203. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/extra_chunks.png +0 -0
  204. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/in_or_out.png +0 -0
  205. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/input.png +0 -0
  206. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/keyword.png +0 -0
  207. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/languages.png +0 -0
  208. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/llm4all.svg +0 -0
  209. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/lm_studio.png +0 -0
  210. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/local_interf_img_multi_pull.svg +0 -0
  211. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/local_interf_multi_pull.svg +0 -0
  212. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/local_interf_pull.svg +0 -0
  213. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/local_interf_push.svg +0 -0
  214. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg +0 -0
  215. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/logo_solar.svg +0 -0
  216. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg +0 -0
  217. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/logo_upload.png +0 -0
  218. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/models.png +0 -0
  219. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/optimisation.png +0 -0
  220. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/optimizer.png +0 -0
  221. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/output.png +0 -0
  222. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg +0 -0
  223. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owchunking.png +0 -0
  224. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owconversellm.svg +0 -0
  225. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owedittable.svg +0 -0
  226. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owembeddings.svg +0 -0
  227. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owexecutescript.svg +0 -0
  228. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owextracttokens.svg +0 -0
  229. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owfilewithpath.svg +0 -0
  230. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg +0 -0
  231. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png +0 -0
  232. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owlemmatizer.svg +0 -0
  233. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg +0 -0
  234. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owmodel_falcon.png +0 -0
  235. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg +0 -0
  236. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg +0 -0
  237. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owmodel_mpnet.svg +0 -0
  238. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_en.svg +0 -0
  239. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg +0 -0
  240. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owoptimisation.svg +0 -0
  241. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owoptimisationselection.png +0 -0
  242. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owqueryllm.svg +0 -0
  243. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owreranking.svg +0 -0
  244. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg +0 -0
  245. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owtable2corpus.svg +0 -0
  246. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owtranslation.svg +0 -0
  247. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owtrigger.svg +0 -0
  248. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/processdocuments.svg +0 -0
  249. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/qwen-color.png +0 -0
  250. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/startloop.png +0 -0
  251. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/tools.png +0 -0
  252. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/widgetFactory.svg +0 -0
  253. {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/__init__.py +0 -0
  254. {aait-2.0.0.1 → aait-2.0.2}/setup.cfg +0 -0
  255. {aait-2.0.0.1 → aait-2.0.2}/tests/test_class_values_context_handler.py +0 -0
  256. {aait-2.0.0.1 → aait-2.0.2}/tests/test_credentials.py +0 -0
  257. {aait-2.0.0.1 → aait-2.0.2}/tests/test_domain_context_handler.py +0 -0
  258. {aait-2.0.0.1 → aait-2.0.2}/tests/test_gui.py +0 -0
  259. {aait-2.0.0.1 → aait-2.0.2}/tests/test_matplotlib_export.py +0 -0
  260. {aait-2.0.0.1 → aait-2.0.2}/tests/test_perfect_domain_context_handler.py +0 -0
  261. {aait-2.0.0.1 → aait-2.0.2}/tests/test_scatterplot_density.py +0 -0
  262. {aait-2.0.0.1 → aait-2.0.2}/tests/test_settings_handler.py +0 -0
  263. {aait-2.0.0.1 → aait-2.0.2}/tests/test_widgets_outputs.py +0 -0
  264. {aait-2.0.0.1 → aait-2.0.2}/tests/test_workflows.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aait
3
- Version: 2.0.0.1
3
+ Version: 2.0.2
4
4
  Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
5
5
  Home-page:
6
6
  Author: Orange community
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aait
3
- Version: 2.0.0.1
3
+ Version: 2.0.2
4
4
  Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
5
5
  Home-page:
6
6
  Author: Orange community
@@ -232,24 +232,6 @@ orangecontrib/AAIT/widgets/icons/qwen-color.png
232
232
  orangecontrib/AAIT/widgets/icons/startloop.png
233
233
  orangecontrib/AAIT/widgets/icons/tools.png
234
234
  orangecontrib/AAIT/widgets/icons/widgetFactory.svg
235
- orangecontrib/ALGORITHM/__init__.py
236
- orangecontrib/ALGORITHM/widgets/__init__.py
237
- orangecontrib/API/__init__.py
238
- orangecontrib/API/widgets/__init__.py
239
- orangecontrib/IMG4IT/__init__.py
240
- orangecontrib/IMG4IT/utils/__init__.py
241
- orangecontrib/IMG4IT/widgets/OWConvertImages.py
242
- orangecontrib/IMG4IT/widgets/OWPaddleOCR.py
243
- orangecontrib/IMG4IT/widgets/__init__.py
244
- orangecontrib/IMG4IT/widgets/designer/__init__.py
245
- orangecontrib/IMG4IT/widgets/icons/__init__.py
246
- orangecontrib/IMG4IT/widgets/icons_dev/__init__.py
247
- orangecontrib/LLM_INTEGRATION/__init__.py
248
- orangecontrib/LLM_INTEGRATION/widgets/__init__.py
249
- orangecontrib/LLM_MODELS/__init__.py
250
- orangecontrib/LLM_MODELS/widgets/__init__.py
251
- orangecontrib/TOOLBOX/__init__.py
252
- orangecontrib/TOOLBOX/widgets/__init__.py
253
235
  tests/test_class_values_context_handler.py
254
236
  tests/test_credentials.py
255
237
  tests/test_domain_context_handler.py
@@ -4,7 +4,7 @@ from setuptools import setup, find_packages
4
4
  NAME = "aait"
5
5
 
6
6
  # Version du package PyPI
7
- VERSION = "2.0.0.1" # la version doit être supérieure à la précédente sinon la publication sera refusée
7
+ VERSION = "2.0.2" # la version doit être supérieure à la précédente sinon la publication sera refusée
8
8
 
9
9
  # Facultatif / Adaptable à souhait
10
10
  AUTHOR = "Orange community"
@@ -18,7 +18,8 @@ KEYWORDS = ["orange3 add-on",]
18
18
 
19
19
  # Tous les packages python existants dans le projet (avec un __ini__.py)
20
20
  PACKAGES = find_packages()
21
- PACKAGES = [pack for pack in PACKAGES if "orangecontrib" in pack and "OWInterface" not in pack and "HLIT" not in pack and "IO4IT" not in pack and "temp_Adam" not in pack]
21
+ PACKAGES = [pack for pack in PACKAGES if "AAIT" in pack]
22
+ PACKAGES.append("orangecontrib")
22
23
  print(PACKAGES)
23
24
 
24
25
 
File without changes
@@ -1,19 +0,0 @@
1
- """
2
- Widgets from Development workflow category
3
-
4
- """
5
- # ID = "orangecontrib.AAIT"
6
-
7
- NAME = "AAIT - Algorithm"
8
-
9
- # Category icon show in the menu
10
- ICON = "icons/algorithm.png"
11
-
12
- BACKGROUND = "light-blue"
13
-
14
- DESCRIPTION = ("AAIT - Algorithm is a package meant to develop and enable advanced AI "
15
- "functionalities in Orange Data Mining.")
16
-
17
-
18
-
19
- # PRIORITY = 6
File without changes
@@ -1,19 +0,0 @@
1
- """
2
- Widgets from Development workflow category
3
-
4
- """
5
- # ID = "orangecontrib.AAIT"
6
-
7
- NAME = "AAIT - API"
8
-
9
- # Category icon show in the menu
10
- ICON = "icons/api.png"
11
-
12
- BACKGROUND = "light-pink"
13
-
14
- DESCRIPTION = ("AAIT - Algorithm is a package meant to develop and enable advanced AI "
15
- "functionalities in Orange Data Mining.")
16
-
17
-
18
-
19
- # PRIORITY = 6
File without changes
File without changes
@@ -1,131 +0,0 @@
1
- import numpy as np
2
- import os
3
- import zipfile
4
- from PIL import Image
5
- import pillow_heif
6
- import Orange
7
- from Orange.data import Table, Domain, StringVariable
8
- from pathlib import Path
9
- from Orange.widgets.widget import OWWidget, Input, Output
10
- from AnyQt.QtWidgets import QApplication
11
-
12
- class OWConvertImages(OWWidget):
13
- name = "Convert Images"
14
- description = "Takes one or more folders as input. In these folders, if a .zip file is found, extract the images it contains, convert them to JPG, and reduce their resolution to decrease the image file size."
15
- icon = "icons/resize-picture.svg"
16
- if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
17
- icon = "icons_dev/resize-picture.svg"
18
- priority = 3000
19
-
20
- class Inputs:
21
- data = Input("Data", Orange.data.Table)
22
-
23
- @Inputs.data
24
- def set_data(self, in_data):
25
- self.data = in_data
26
- if self.data is None:
27
- return
28
- if "folders_path" in in_data.domain:
29
- self.folders_path = in_data.get_column("folders_path")
30
- elif "folder_path" in in_data.domain:
31
- self.folders_path = in_data.get_column("folder_path")
32
- if "file_path" in in_data.domain:
33
- self.path_file = in_data.get_column("file_path")
34
- else:
35
- if self.folders_path is None:
36
- self.error("No folder provided.")
37
- return
38
- path = Path(str(self.folders_path[0]))
39
- self.path_file = path.parent
40
- self.run()
41
-
42
- class Outputs:
43
- data = Output("Data", Orange.data.Table)
44
-
45
- def __init__(self):
46
- super().__init__()
47
- self.data = None
48
- self.folders_path = None
49
- self.path_file = None
50
- self.MAX_SIZE = (1000, 1000)
51
- self.run()
52
-
53
- def trouver_fichiers_zip(self,dossier):
54
- chemin_complet = None
55
- for racine, dossiers, fichiers in os.walk(dossier):
56
- for fichier in fichiers:
57
- if fichier.lower().endswith('.zip'):
58
- chemin_complet = os.path.join(racine, fichier)
59
- return chemin_complet
60
-
61
- def run(self):
62
- self.error("")
63
- self.warning("")
64
-
65
- if self.data is None:
66
- return
67
-
68
- if self.folders_path is None or self.path_file is None:
69
- self.error("No folder provided.")
70
- return
71
-
72
- # Fonctionnel pour confideo
73
- # a modifier cette fonction encore la fonction de dezip à l'intérieur
74
- # il faudrait modifier pour enlever le début et ne laisser que la partie convertion d'image
75
- image_paths = []
76
- pillow_heif.register_heif_opener()
77
- # Extraction et collecte des images
78
- for file_path in self.folders_path:
79
- img = []
80
- path = self.trouver_fichiers_zip(file_path)
81
- if path == None:
82
- pass
83
- extract_path = file_path + "/" + "temp_images"
84
- os.makedirs(extract_path, exist_ok=True)
85
- ext = os.path.splitext(str(path))[1].lower()
86
- if ext == ".zip":
87
- with zipfile.ZipFile(path, "r") as zip_ref:
88
- zip_ref.extractall(extract_path)
89
- for root, dirs, files in os.walk(extract_path):
90
- for fname in files:
91
- if fname.lower().endswith((".png", ".jpg", ".jpeg", ".tiff", ".tif", ".heif", ".heic")):
92
- img.append(os.path.join(root, fname))
93
- elif ext in [".png", ".jpg", ".jpeg", ".tiff", ".tif", ".heif", ".heic"]:
94
- image_paths.append(path)
95
- image_paths.append(img)
96
-
97
- converted_path = str(self.path_file) + "/temp_images/converted"
98
- os.makedirs(converted_path, exist_ok=True)
99
- new_image_paths = []
100
-
101
- for image_path in image_paths:
102
- for img_path in image_path:
103
- ext = os.path.splitext(img_path)[1].lower()
104
- if ext in [".png", ".jpg", ".jpeg", ".tiff", ".tif", ".heif", ".heic"]:
105
- try:
106
- image = Image.open(img_path)
107
- if image.mode != 'RGB':
108
- image = image.convert('RGB')
109
- image.thumbnail(self.MAX_SIZE)
110
- new_filename = os.path.splitext(os.path.basename(img_path))[0] + ".jpg"
111
- new_path = os.path.join(converted_path, new_filename)
112
- image.save(new_path, format="JPEG", quality=70)
113
- new_image_paths.append(new_path)
114
- # Supprimer l'original (facultatif)
115
- # os.remove(img_path)
116
- except Exception as e:
117
- print(f"Erreur de conversion {img_path} : {e}")
118
- data_metas = [[str(self.path_file), str(new_image_paths)]]
119
- domain = Domain([], metas=[StringVariable("folder_path"), StringVariable("image_paths")])
120
- table = Table.from_numpy(domain, np.empty((len(data_metas), 0)), metas=data_metas)
121
- self.Outputs.data.send(table)
122
-
123
- if __name__ == "__main__":
124
- import sys
125
- app = QApplication(sys.argv)
126
- my_widget = OWConvertImages()
127
- my_widget.show()
128
- if hasattr(app, "exec"):
129
- sys.exit(app.exec())
130
- else:
131
- sys.exit(app.exec_())
@@ -1,213 +0,0 @@
1
- import os
2
- import sys
3
- import numpy as np
4
-
5
- import fitz
6
- from paddleocr import PaddleOCR
7
-
8
- import Orange.data
9
- from Orange.data import Table, Domain, StringVariable, ContinuousVariable
10
- from AnyQt.QtWidgets import QApplication
11
- from Orange.widgets import widget
12
- from Orange.widgets.utils.signals import Input, Output
13
-
14
- if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
15
- from Orange.widgets.orangecontrib.AAIT.utils import thread_management, SimpleDialogQt
16
- from Orange.widgets.orangecontrib.AAIT.utils.import_uic import uic
17
- from Orange.widgets.orangecontrib.AAIT.utils.initialize_from_ini import apply_modification_from_python_file
18
- from Orange.widgets.orangecontrib.AAIT.utils.MetManagement import GetFromRemote, get_local_store_path
19
- else:
20
- from orangecontrib.AAIT.utils import thread_management, SimpleDialogQt
21
- from orangecontrib.AAIT.utils.import_uic import uic
22
- from orangecontrib.AAIT.utils.initialize_from_ini import apply_modification_from_python_file
23
- from orangecontrib.AAIT.utils.MetManagement import GetFromRemote, get_local_store_path
24
-
25
-
26
-
27
- @apply_modification_from_python_file(filepath_original_widget=__file__)
28
- class OWPaddleOCR(widget.OWWidget):
29
- name = "Paddle OCR"
30
- description = "Apply OCR on the PDF documents present in the 'path' column of the input Table"
31
- icon = "icons/paddleocr.svg"
32
- if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
33
- icon = "icons_dev/paddleocr.svg"
34
- gui = os.path.join(os.path.dirname(os.path.abspath(__file__)), "designer/owpaddleocr.ui")
35
- want_control_area = False
36
- priority = 1212
37
-
38
- class Inputs:
39
- data = Input("Data", Orange.data.Table)
40
-
41
- class Outputs:
42
- data = Output("Data", Orange.data.Table)
43
-
44
- @Inputs.data
45
- def set_data(self, in_data):
46
- self.data = in_data
47
- if self.autorun:
48
- self.run()
49
-
50
- def __init__(self):
51
- super().__init__()
52
- # Qt Management
53
- self.setFixedWidth(470)
54
- self.setFixedHeight(300)
55
- uic.loadUi(self.gui, self)
56
-
57
- # Data Management
58
- self.data = None
59
- self.model = None
60
- self.thread = None
61
- self.autorun = True
62
- self.result = None
63
- self.load_model()
64
- self.post_initialized()
65
-
66
- def load_model(self):
67
- local_store_path = get_local_store_path()
68
- model_path = os.path.join(local_store_path, "Models", "ComputerVision", ".paddleocr", "whl")
69
- load = True
70
- if not os.path.exists(model_path):
71
- load = False
72
- self.error("PaddleOCR model is not in your computer. This widget cannot process your data.")
73
- if not SimpleDialogQt.BoxYesNo("Model isn't in your computer. Do you want to download it from AAIT store?"):
74
- return
75
- try:
76
- if 0 == GetFromRemote("Paddle OCR"):
77
- load = True
78
- self.error("")
79
- except:
80
- SimpleDialogQt.BoxError("Unable to get the Model.")
81
- return
82
- if load:
83
- self.model = PaddleOCR(use_angle_cls=True, lang="fr",
84
- det_model_dir=os.path.join(model_path, "det"),
85
- rec_model_dir=os.path.join(model_path, "rec"),
86
- cls_model_dir=os.path.join(model_path, "cls"),
87
- show_log=False)
88
- self.information("Paddle OCR model successfully loaded.")
89
-
90
-
91
- def run(self):
92
- # if thread is running quit
93
- if self.thread is not None:
94
- self.thread.safe_quit()
95
-
96
- if self.data is None:
97
- return
98
-
99
- if self.model is None:
100
- return
101
-
102
- # Verification of in_data
103
- self.error("")
104
- try:
105
- self.data.domain["path"]
106
- except KeyError:
107
- self.error('You need a "path" column in input data')
108
- return
109
-
110
- if type(self.data.domain["path"]).__name__ != 'StringVariable':
111
- self.error('"path" column needs to be a Text')
112
- return
113
-
114
- # Start progress bar
115
- self.progressBarInit()
116
-
117
- # Connect and start thread : main function, progress, result and finish
118
- # --> progress is used in the main function to track progress (with a callback)
119
- # --> result is used to collect the result from main function
120
- # --> finish is just an empty signal to indicate that the thread is finished
121
- self.thread = thread_management.Thread(self.apply_OCR_on_Table, self.data, self.model)
122
- self.thread.progress.connect(self.handle_progress)
123
- self.thread.result.connect(self.handle_result)
124
- self.thread.finish.connect(self.handle_finish)
125
- self.thread.start()
126
-
127
- def handle_progress(self, value: float) -> None:
128
- self.progressBarSet(value)
129
-
130
- def handle_result(self, result):
131
- try:
132
- self.result = result
133
- self.Outputs.data.send(result)
134
- except Exception as e:
135
- print("An error occurred when sending out_data:", e)
136
- self.Outputs.data.send(None)
137
- return
138
-
139
- def handle_finish(self):
140
- print("Embeddings finished")
141
- self.progressBarFinished()
142
-
143
- def post_initialized(self):
144
- pass
145
-
146
-
147
- def apply_OCR_on_Table(self, table, model, progress_callback=None, argself=None):
148
- # Copy of input data
149
- data = table.copy()
150
- attr_dom = list(data.domain.attributes)
151
- metas_dom = list(data.domain.metas)
152
- class_dom = list(data.domain.class_vars)
153
-
154
- # Iterate on the data Table
155
- rows = []
156
- for i, row in enumerate(data):
157
- # Get the rest of the data
158
- features = [row[x] for x in attr_dom]
159
- targets = [row[y] for y in class_dom]
160
- metas = list(data.metas[i])
161
- filepath = row["path"].value
162
- result_per_page = apply_OCR_on_pdf(filepath, model)
163
- for key, value in result_per_page.items():
164
- new_row = features + targets + metas + [key, value]
165
- rows.append(new_row)
166
- if progress_callback is not None:
167
- progress_value = float(100 * (i + 1) / len(data))
168
- progress_callback(progress_value)
169
- if argself is not None:
170
- if argself.stop:
171
- break
172
-
173
- # Create new Domain for new columns
174
- ocr_dom = [ContinuousVariable("Page n°"), StringVariable("OCR Extraction")]
175
- domain = Domain(attributes=attr_dom, metas=metas_dom + ocr_dom, class_vars=class_dom)
176
-
177
- # Create and return table
178
- out_data = Table.from_list(domain=domain, rows=rows)
179
- return out_data
180
-
181
-
182
- def apply_OCR_on_pdf(filepath, model, dpi=300):
183
- # Load the document
184
- doc = fitz.open(filepath)
185
- # Iterate over pages
186
- result_per_page = {}
187
- for page_num in range(len(doc)):
188
- page = doc.load_page(page_num)
189
-
190
- # Render page to a pixmap (RGB image)
191
- mat = fitz.Matrix(dpi/72, dpi/72)
192
- pix = page.get_pixmap(matrix=mat, colorspace=fitz.csRGB)
193
- img = np.frombuffer(pix.samples, dtype=np.uint8).reshape(pix.height, pix.width, pix.n)
194
-
195
- # Apply OCR
196
- result_ocr = model.ocr(img, cls=True)[0]
197
- full_text = ""
198
- for line in result_ocr:
199
- text = line[1][0]
200
- # confidence = line[1][1] # maybe useful later
201
- full_text += text + "\n"
202
- result_per_page[page_num] = full_text
203
- return result_per_page
204
-
205
-
206
- if __name__ == "__main__":
207
- app = QApplication(sys.argv)
208
- my_widget = OWPaddleOCR()
209
- my_widget.show()
210
- if hasattr(app, "exec"):
211
- sys.exit(app.exec())
212
- else:
213
- sys.exit(app.exec_())
@@ -1,18 +0,0 @@
1
- """
2
- Widgets from Development workflow category
3
-
4
- """
5
- # ID = "orangecontrib.AAIT"
6
-
7
- NAME = "Image Analysis Intelligent Tools"
8
-
9
- # Category icon show in the menu
10
- ICON = "icons/img4it.svg"
11
-
12
- BACKGROUND = "light-yellow"
13
-
14
- DESCRIPTION = ("Exploit computer vision technology with Orange Data Mining !")
15
-
16
-
17
-
18
- # PRIORITY = 6
File without changes
@@ -1,19 +0,0 @@
1
- """
2
- Widgets from Development workflow category
3
-
4
- """
5
- # ID = "orangecontrib.AAIT"
6
-
7
- NAME = "AAIT - LLM INTEGRATION"
8
-
9
- # Category icon show in the menu
10
- ICON = "icons/ai.png"
11
-
12
- BACKGROUND = "brown"
13
-
14
- DESCRIPTION = ("AAIT - is a package meant to develop and enable advanced AI "
15
- "functionalities in Orange Data Mining.")
16
-
17
-
18
-
19
- # PRIORITY = 6
File without changes
@@ -1,19 +0,0 @@
1
- """
2
- Widgets from Development workflow category
3
-
4
- """
5
- # ID = "orangecontrib.AAIT"
6
-
7
- NAME = "AAIT - Models"
8
-
9
- # Category icon show in the menu
10
- ICON = "icons/models.png"
11
-
12
- BACKGROUND = "light-purple"
13
-
14
- DESCRIPTION = ("AAIT - Algorithm is a package meant to develop and enable advanced AI "
15
- "functionalities in Orange Data Mining.")
16
-
17
-
18
-
19
- # PRIORITY = 6
File without changes
@@ -1,19 +0,0 @@
1
- """
2
- Widgets from Development workflow category
3
-
4
- """
5
- # ID = "orangecontrib.AAIT"
6
-
7
- NAME = "AAIT - Toolbox"
8
-
9
- # Category icon show in the menu
10
- ICON = "icons/tools.png"
11
-
12
- BACKGROUND = "light-orange"
13
-
14
- DESCRIPTION = ("AAIT - Toolobx is a package meant to develop and enable advanced AI "
15
- "functionalities in Orange Data Mining.")
16
-
17
-
18
-
19
- # PRIORITY = 6
File without changes
File without changes
File without changes