Skip to content
Snippets Groups Projects
Commit 026206ca authored by ivan.rigo's avatar ivan.rigo
Browse files

Tesseract ongoing

parent dd6da134
Branches
No related tags found
No related merge requests found
# Default ignored files
/shelf/
/workspace.xml
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="PyDocumentationSettings">
<option name="format" value="PLAIN" />
<option name="myDocStringFormat" value="Plain" />
</component>
</module>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.8 (ProjetSemestre-r8sP9LGg)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (ProjetSemestre-r8sP9LGg)" project-jdk-type="Python SDK" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/ProjetSemestre.iml" filepath="$PROJECT_DIR$/.idea/ProjetSemestre.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$/SROIE2019/unilm" vcs="Git" />
</component>
</project>
\ No newline at end of file
! python run_seq_labeling.py --data_dir "/home/ivan/Bureau/SemestreFinale/dataset" --labels "/home/ivan/Bureau/SemestreFinale/dataset/labels.txt" --model_name_or_path "/home/ivan/Bureau/SemestreFinale/SROIE2019/layoutlm-base-uncased" --model_type layoutlm --max_seq_length 512 --do_lower_case --do_train --num_train_epochs 1 --logging_steps 50 --save_steps -1 --output_dir output --overwrite_output_dir --per_gpu_train_batch_size 8 --per_gpu_eval_batch_size 16
! python run_seq_labeling.py --data_dir "/home/ivan/Bureau/NoteHepia/ProjetSemestre/dataset" --labels "/home/ivan/Bureau/NoteHepia/ProjetSemestre/dataset/labels.txt" --model_name_or_path "/home/ivan/Bureau/NoteHepia/ProjetSemestre/SROIE2019/layoutlm-base-uncased" --model_type layoutlm --max_seq_length 512 --do_lower_case --do_train --num_train_epochs 1 --logging_steps 50 --save_steps -1 --output_dir output --overwrite_output_dir --per_gpu_train_batch_size 8 --per_gpu_eval_batch_size 16
! python run_seq_labeling.py --data_dir "/home/ivan/Bureau/NoteHepia/ProjetSemestre/dataset" --labels "/home/ivan/Bureau/NoteHepia/ProjetSemestre/dataset/labels.txt" --model_name_or_path "/home/ivan/Bureau/NoteHepia/ProjetSemestre/SROIE2019/layoutlm-base-uncased" --model_type layoutlm --do_lower_case --max_seq_length 512 --do_predict --logging_steps 10 --save_steps -1 --output_dir output --per_gpu_eval_batch_size 8
! python run_seq_labeling.py --data_dir "/home/ivan/Bureau/NoteHepia/ProjetSemestre/dataset" --labels "/home/ivan/Bureau/NoteHepia/ProjetSemestre/dataset/labels.txt"
--model_name_or_path "/home/ivan/Bureau/NoteHepia/ProjetSemestre/SROIE2019/layoutlm-base-uncased" --model_type layoutlm --max_seq_length 512 --do_lower_case --do_train
--num_train_epochs 1 --logging_steps 50 --save_steps -1 --output_dir output --overwrite_output_dir --per_gpu_train_batch_size 8 --per_gpu_eval_batch_size 16
! python run_seq_labeling.py --data_dir "/home/ivan/Bureau/NoteHepia/ProjetSemestre/dataset" --labels "/home/ivan/Bureau/NoteHepia/ProjetSemestre/dataset/labels.txt"
--model_name_or_path "/home/ivan/Bureau/NoteHepia/ProjetSemestre/SROIE2019/layoutlm-base-uncased" --model_type layoutlm --do_lower_case --max_seq_length 512 --do_predict
--logging_steps 10 --save_steps -1 --output_dir output --per_gpu_eval_batch_size 8
! python run_seq_labeling.py --data_dir "/home/ivan/Bureau/SemestreFinale/dataset" --labels "/home/ivan/Bureau/SemestreFinale/dataset/labels.txt" --model_name_or_path "/home/ivan/Bureau/SemestreFinale/SROIE2019/layoutlm-base-uncased" --model_type layoutlm --do_lower_case --max_seq_length 512 --do_predict --logging_steps 10 --save_steps -1 --output_dir output --per_gpu_eval_batch_size 8
\ No newline at end of file
On traite de layoutlm dans l'optique du transformer, qui est une pseudo api permettant d'executée du layout
Les deux premiers liens sont des alternatives,sinon il n'y a pas plus d'info que sur le tutorial ( il mentionne le besoin de la position relatif)
\ No newline at end of file
File moved
File moved
Input
Au préalable extraire chaque mots avec leurs positions
Commun(Train/Predict)
1 fichier position mot dans img
1 fichier position mot dans img relatif
Train
1 fichier contenant les mots avec les labels
1 fichier labels
Predict
1 fichier position mot dans img
1 fichier position mot dans img relatif
Content Test
Mot Tag
Mot2 Tag
MotImg2 Tag
Mot2Img2 Tag
Box/position img
Mot X1 Y1 X2 Y2
Image/Position relatif
Mot NormX1 NormY1 NormX2 NormY2 WidthImg HeightImg ImgFileName
Output
Un fichier test_result.txt
Un fichier test_predict.txt pour la prédiction
Voir dossier output
\ No newline at end of file
......@@ -4,17 +4,41 @@
Box contient les positions des 4 points englobant le texte
Entity contient les labels avec le texte correspondant dans l'image et le label
img qui contient l'image correspondant au deux fichier précédent
Fonction dataset creator
Les trois fichiers ont le même nom.
bbox_labeled va normalement assigné les labels en utilisant le fichier entity (le label correct
pour les bons texts,et O pour le reste) avec assign Labels
On appel assign label qui renverra un dataframe panda.
Elle reaplique un dernier test pour vérifié les labels avant de renvoyé un tableau contenant
toute les données importants
On applique la fonction assign label sur en donnant la box et entity
on utilise le résultat pour récrée un tableau similaire, mais en séparant les phrases en mots
On réeffectue une labelisation sans passer par les fonctions
On vérife pour cela chaque éléments avec un seqmatcher, s'il est correct,on écrit S-LabelCorrespondant,sinon O pour indiquer qu'il ne correspond à aucun
On ajoute ensuite les dimension de l'img pour pour le groupe de donnée et on recommence pour la prochaine image
Fonction assign_label
word contient tout les textes avec leurs coordoonées + nom fichier
entities correspond au "réponse" de l'image
Already labeled permet de s'assurer que tout est labelisé
On appel assign_line_label pour chaque texte contenue dans word
Fonction assign_labels
On reçoit un string et le contenue de entites, et on vérifie soit qu'il soit pareil, soit
qu'il match en utilisant la fonction SequenceMatcher
Fonction assign_line_label
On découpe une phrase/suite de mot située sur une même ligne dans un tableau
On parcours chaque entrée de entites (en les splittant) et on vérifiée qu'une des entitées correspond au mot actuel, on retourne le label correspondant (on pars du fait qu'une ligne va correspondre
à un label et non pas qu'un ensemble de mot peut appartenir à différent labels)
On vérifie ensuite que le label reçu n'est pas adresse/company et qu'on ait déjà trouvé le(s) label(s) Total/(Data,Total), car on pars du fait que ces deux champs sont située plus haut que ces derniers
On vérifie ensuite que si c'étais le total/date,qu'il possède une plus grande bb (on prend la date/prix en gras/grand en prioritée), pour cela, on a un deuxième tableau dédié à contenir la taille
du plus grand élément, pour ces valeurs,on rentre "0" temporairement,pendant qu'on attend la fin du parcours et on modifiera la plus grande date/total.
On ajoute ensuite le label actuellement traitée
On envoie a la fin word avec une nouvelle colonne label
Write dataset
On split les données en trois groupe,données,longueur,hauteur de l'image
On écrit bêtement dans le format de données actuellement utilisé
18-19
Création du dossier stockant le dataset en parcourant le dataset crée au ligne 16-17
......@@ -27,3 +51,8 @@ les mêmes labels
on pourrait supprimer 36-37 qui sont utilisé pour lancer l'entrainement
predict.py
File moved
https://stackoverflow.com/questions/61461520/does-anyone-knows-the-meaning-of-output-of-image-to-data-image-to-osd-methods-o
level = 1/2/3/4/5,the level of current item.
page_num: the page index of the current item. In most instances, a image only has one page.
block_num: the block item of the current item. when tesseract OCR Image, it will split the image into several blocks according the PSM parameters and some rules. The words in a line often in a block.
par_num: The paragraph index of the current item. It is the page analysis results. line_num: The line index of the current item. It is the page analysis results. word_num: The word index in one block.
line_num: The line index of the current item. It is the page analysis results.
word_num: The word index in one block.
left/top/width/height:the top-left coordinate and the width and height of the current word.
conf: the confidence of the current word, the range is -1~100.. The -1 means that there is no text here. The 100 is the highest value.
text: the word ocr results
......@@ -22,8 +22,3 @@ il faudrait trouver s'il existe quelque chose qui permet de split les images pou
En bonus, voir s'il font aussi la rotation dans le cas ou les tickets sont placé dans différentes directions
15:30 jeudi
Relire article
Présenter code
Semaine 5
Mercredis
Voir layoutLM-qa/utilisation
Appliquer closing
Faire tesseract une sortie similaire a train/test (crée box,entity vide,img)
Essayer LayoutLM sans faire fine tuning en rajoutant des images sur test
Jeudi
#Déffriché assign_label
#Réecrire résumée code
Essayée de testé avec une image maison
#Voir encore fin code
#Revoir Hugging
Voir que format dataset correct
Durant la semaine 4
Faire descriptif input/output layoutlm
Voir Tesseract/Yolo
Comprendre comment passé de l'image a entity
Basse Prioritée
Fouiller les liens pour voir s'il y a de meilleurs tutos
Comparé reçu niklaus avec défaut
Regarder les critères pour dossier box (espace?)
Comparé reçu niklaus avec défaut
Voir code jusqu'a insèrtion dans layout pour lundi
Courvoisier pour tesseract
Prof :
Meeting avec VAHIB
Investigation Yolo/tessseract
Durant la semaine 3 (27-31.05)
Ivan
Comprendre SROIE pour rapport avant mardi
......
Tmp/1.jpg 0 → 100644
Tmp/1.jpg

3.51 MiB

Tmp/2.jpg 0 → 100644
Tmp/2.jpg

3.63 MiB

Tmp/3.jpg 0 → 100644
Tmp/3.jpg

2.76 MiB

Tmp/4.jpg 0 → 100644
Tmp/4.jpg

3.83 MiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment