# dataprocess
# TODO : Make better validators for pydantic classes, especially for addresses.
things to do:
When we process an entry, we should directly, from the pydantic class, or any other indication, know that the thing has to have a value. If the thing is None, for some values it means the line should be discarded. For some others, it just means it should be casted in the corresponding value (like "" for a string).
Solution pour traiter un nouveau dataset
Construire les nouvelles colonnes à partir des anciennes.
On construit les colonnes une par une, et ensuite on vire les anciennes
Procédure:
Pour chaque box OCR:
Voir si il y a des ocurrences exactes de certains champs.
Si c'est le cas, ça veut dire que les champs correspondent. On peut calculer la distance entre l'embedding du champ et l'embedding de la box, pour voir à quoi correspond une distance entre deux embeddings qui se correspondent vraiment.
Ensuite, pour les champs pour lesquels on a pas trouvé, calculer la distance entre leurs embeddings et les embeddings des champs, voir si on trouve des distances similaires.
Faire une petite revue des distances entre strings pour comprendre un peu.
On doit aussi analyser chacun des numéros (telephone, regex email ? Code postal, tva etc...) pour voir si il y a quelque chose à en tirer.
Parce que si il y a seulement des parties de la string de l'entree qui correspond a la box, ça peut être le bon truc quand même.
On va diviser les trucs ligne par ligne dans les box, mais garder un indice indiquant la ligne. Sur les boxes avec une ligne cet indice sera 1. C'est normal. Ça permet d'indiquer de façon soft la position des éléments dans une box.
To change the interpreter:
`Cmd+Shift+P` -> /anaconda3/bin/python
Raw data
{
"_id": null,
"home_page": "https://github.com/cubelogistics/cleankit",
"name": "cleankit",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": null,
"author": "Sacha Ichbiah",
"author_email": "sacha@cu6e.com",
"download_url": "https://files.pythonhosted.org/packages/ed/9e/bd9eb16a40856b6b32756e06093fd1d6be6949106ddf98fd44d9ff9d8a4a/cleankit-0.0.5.tar.gz",
"platform": null,
"description": "# dataprocess\n\n# TODO : Make better validators for pydantic classes, especially for addresses. \n\n\nthings to do: \nWhen we process an entry, we should directly, from the pydantic class, or any other indication, know that the thing has to have a value. If the thing is None, for some values it means the line should be discarded. For some others, it just means it should be casted in the corresponding value (like \"\" for a string). \n\nSolution pour traiter un nouveau dataset \nConstruire les nouvelles colonnes \u00e0 partir des anciennes. \nOn construit les colonnes une par une, et ensuite on vire les anciennes\n\n\n\n\nProc\u00e9dure: \nPour chaque box OCR: \n Voir si il y a des ocurrences exactes de certains champs. \n Si c'est le cas, \u00e7a veut dire que les champs correspondent. On peut calculer la distance entre l'embedding du champ et l'embedding de la box, pour voir \u00e0 quoi correspond une distance entre deux embeddings qui se correspondent vraiment. \n Ensuite, pour les champs pour lesquels on a pas trouv\u00e9, calculer la distance entre leurs embeddings et les embeddings des champs, voir si on trouve des distances similaires. \n \n \nFaire une petite revue des distances entre strings pour comprendre un peu. \nOn doit aussi analyser chacun des num\u00e9ros (telephone, regex email ? Code postal, tva etc...) pour voir si il y a quelque chose \u00e0 en tirer. \nParce que si il y a seulement des parties de la string de l'entree qui correspond a la box, \u00e7a peut \u00eatre le bon truc quand m\u00eame. \nOn va diviser les trucs ligne par ligne dans les box, mais garder un indice indiquant la ligne. Sur les boxes avec une ligne cet indice sera 1. C'est normal. \u00c7a permet d'indiquer de fa\u00e7on soft la position des \u00e9l\u00e9ments dans une box. \n\n\nTo change the interpreter: \n\n`Cmd+Shift+P` -> /anaconda3/bin/python\n",
"bugtrack_url": null,
"license": null,
"summary": "Simple operations for navigation",
"version": "0.0.5",
"project_urls": {
"Homepage": "https://github.com/cubelogistics/cleankit",
"Team website": "https://github.com/cubelogistics"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b0f96625b04de18e2298b8a774e1bfe891348ea416e05fd7dc7a184a9cb2dbe6",
"md5": "f88aa0b214aa80013377e84801a8a5e1",
"sha256": "91e0c4a485522e8c1ad47ca3c50aea2cecdaf54820ab4dc5e98446c49b452079"
},
"downloads": -1,
"filename": "cleankit-0.0.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f88aa0b214aa80013377e84801a8a5e1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 8610,
"upload_time": "2024-03-28T01:28:10",
"upload_time_iso_8601": "2024-03-28T01:28:10.374987Z",
"url": "https://files.pythonhosted.org/packages/b0/f9/6625b04de18e2298b8a774e1bfe891348ea416e05fd7dc7a184a9cb2dbe6/cleankit-0.0.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ed9ebd9eb16a40856b6b32756e06093fd1d6be6949106ddf98fd44d9ff9d8a4a",
"md5": "b4855f650871dd1411dcb1e32ca34d47",
"sha256": "b043ad14b86d03b92adae73ee256d8e9b62fcb2d342364e98a825c402dc2899b"
},
"downloads": -1,
"filename": "cleankit-0.0.5.tar.gz",
"has_sig": false,
"md5_digest": "b4855f650871dd1411dcb1e32ca34d47",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 9993,
"upload_time": "2024-03-28T01:28:11",
"upload_time_iso_8601": "2024-03-28T01:28:11.333525Z",
"url": "https://files.pythonhosted.org/packages/ed/9e/bd9eb16a40856b6b32756e06093fd1d6be6949106ddf98fd44d9ff9d8a4a/cleankit-0.0.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-03-28 01:28:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "cubelogistics",
"github_project": "cleankit",
"github_not_found": true,
"lcname": "cleankit"
}