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.
- {aait-2.0.0.1 → aait-2.0.2}/PKG-INFO +1 -1
- {aait-2.0.0.1 → aait-2.0.2}/aait.egg-info/PKG-INFO +1 -1
- {aait-2.0.0.1 → aait-2.0.2}/aait.egg-info/SOURCES.txt +0 -18
- {aait-2.0.0.1 → aait-2.0.2}/setup.py +3 -2
- aait-2.0.0.1/orangecontrib/ALGORITHM/__init__.py +0 -0
- aait-2.0.0.1/orangecontrib/ALGORITHM/widgets/__init__.py +0 -19
- aait-2.0.0.1/orangecontrib/API/__init__.py +0 -0
- aait-2.0.0.1/orangecontrib/API/widgets/__init__.py +0 -19
- aait-2.0.0.1/orangecontrib/IMG4IT/__init__.py +0 -0
- aait-2.0.0.1/orangecontrib/IMG4IT/utils/__init__.py +0 -0
- aait-2.0.0.1/orangecontrib/IMG4IT/widgets/OWConvertImages.py +0 -131
- aait-2.0.0.1/orangecontrib/IMG4IT/widgets/OWPaddleOCR.py +0 -213
- aait-2.0.0.1/orangecontrib/IMG4IT/widgets/__init__.py +0 -18
- aait-2.0.0.1/orangecontrib/IMG4IT/widgets/designer/__init__.py +0 -0
- aait-2.0.0.1/orangecontrib/IMG4IT/widgets/icons/__init__.py +0 -0
- aait-2.0.0.1/orangecontrib/IMG4IT/widgets/icons_dev/__init__.py +0 -0
- aait-2.0.0.1/orangecontrib/LLM_INTEGRATION/__init__.py +0 -0
- aait-2.0.0.1/orangecontrib/LLM_INTEGRATION/widgets/__init__.py +0 -19
- aait-2.0.0.1/orangecontrib/LLM_MODELS/__init__.py +0 -0
- aait-2.0.0.1/orangecontrib/LLM_MODELS/widgets/__init__.py +0 -19
- aait-2.0.0.1/orangecontrib/TOOLBOX/__init__.py +0 -0
- aait-2.0.0.1/orangecontrib/TOOLBOX/widgets/__init__.py +0 -19
- {aait-2.0.0.1 → aait-2.0.2}/License.txt +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/aait.egg-info/dependency_links.txt +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/aait.egg-info/entry_points.txt +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/aait.egg-info/namespace_packages.txt +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/aait.egg-info/requires.txt +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/aait.egg-info/top_level.txt +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/__init__.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/SignalReceiver.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/__init__.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/audit_widget.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (2).TIF +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (3).TIF +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (4).TIF +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0001.csv +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0002.csv +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0003.csv +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dynamic_results.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/test_all_widgets.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/test_server.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_4all.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_chunking.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_edit_table.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_mpnet_create_embeddings.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_optimisation.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_optimisationselection.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_powfactory.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_queryllm.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_spacy_md_fr_lemmatizer.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_traduction.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widgets_model.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/encapsulation/__init__.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/GPT4ALL.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/GPT4ALL_killer.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/MergeBaseLora.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/SERV_kill_workflow.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/SERV_requests.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/SERV_start_workflow.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/Tutorial_Finetuning.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/Tutorial_TestFinetuning.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/__init__.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/answers.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/chunking.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/embeddings.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/finetuning.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/functions_DatasetGeneration.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/functions_Finetuning.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/lemmes.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/lmstudio.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/main_DatasetGeneration.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/main_Finetuning.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/process_documents.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/prompt_management.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/quickpy.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/test.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/test_functions.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/llm/translations.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/optimiser/__init__.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/optimiser/optuna_multi.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/CheckMetaData.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/MetManagement.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/SimpleDialogQt.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/__init__.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/aait_repo_file.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/check_data_in.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/delta_local_shared_fodler.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/import_uic.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/initialize_from_ini.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/mac_utils.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/shared_functions.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/shared_variables.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/subprocess_management.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/thread_management.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/tools/__init__.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/tools/change_owcorpus.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/tools/first_time_check.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/tools/owcorpus_ok.txt +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/utils/windows_utils.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWAAITResourcesManager.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWApplyRules.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWCN2rule_view.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWChunking.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWConcatRules.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWConverseLLM.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWCreateEmbeddings.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWDisplayMD.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWEditTable.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWEndLoop.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWExecuteScript.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWExtraChunks.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWExtractTokens.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWFileWithPath.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWGenerateQuestions.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWGenerateSynthesis.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWInputSelector.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWKeywords.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWLLM4ALL.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWLMStudio.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWLanguageDetection.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWLemmatizer.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Falcon.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_MPNET.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Mistral.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Qwen.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Qwen2_5_32B.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_Solar.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_SolarUncensored.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_EN.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_FR.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWOptimisation.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWOptimisationSelection.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWOptimisationSendScore.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWQueryLLM.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWRandomData.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWReranking.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWStartLoop.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWTable2Corpus.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWTranslation.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/OWTrigger.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/POW_Wfactory.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/__init__.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owapplyrules.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owchunking.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owconcatrules.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owconversellm.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owembeddings.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owendloop.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owextracttokens.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owkeyword.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owllm4all.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owloadworkflow.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owreranking.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owstartloop.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owtranslation.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/designer/owtrigger.ui +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/CN2RuleViewer.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/MDViewer.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/Mistral.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/apply_rules.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/category.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/dark_green.txt +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/de.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/documents.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/endloop.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/extra_chunks.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/in_or_out.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/input.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/keyword.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/languages.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/llm4all.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/lm_studio.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/local_interf_img_multi_pull.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/local_interf_multi_pull.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/local_interf_pull.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/local_interf_push.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/logo_solar.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/logo_upload.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/models.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/optimisation.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/optimizer.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/output.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owchunking.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owconversellm.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owedittable.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owembeddings.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owexecutescript.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owextracttokens.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owfilewithpath.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owlemmatizer.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owmodel_falcon.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owmodel_mpnet.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_en.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owoptimisation.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owoptimisationselection.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owqueryllm.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owreranking.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owtable2corpus.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owtranslation.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/owtrigger.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/processdocuments.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/qwen-color.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/startloop.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/tools.png +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/widgets/icons/widgetFactory.svg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/orangecontrib/__init__.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/setup.cfg +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/tests/test_class_values_context_handler.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/tests/test_credentials.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/tests/test_domain_context_handler.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/tests/test_gui.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/tests/test_matplotlib_export.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/tests/test_perfect_domain_context_handler.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/tests/test_scatterplot_density.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/tests/test_settings_handler.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/tests/test_widgets_outputs.py +0 -0
- {aait-2.0.0.1 → aait-2.0.2}/tests/test_workflows.py +0 -0
|
@@ -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.
|
|
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 "
|
|
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
|
|
File without changes
|
|
File without changes
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (2).TIF
RENAMED
|
File without changes
|
{aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (3).TIF
RENAMED
|
File without changes
|
{aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (4).TIF
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_mpnet_create_embeddings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aait-2.0.0.1 → aait-2.0.2}/orangecontrib/AAIT/audit_widget/widget_spacy_md_fr_lemmatizer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|