Utilisateur:Thomas : Différence entre versions

De Design numérique
Aller à : navigation, rechercher
m (Comment une machine peut-elle "lire" une page ?)
m (Traiter des fichiers avec Tesseract)
Ligne 38 : Ligne 38 :
  
  
Chercher des protocoles de modification du texte en BASH.
+
<syntaxhighlight lang="python">
<syntaxhiglight lang="BASH">
+
cat 1.txt 2.txt  3.txt 4.txt > final.txt
coucou
 
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
Combine tous les textes en un seul.
 +
 +
<syntaxhighlight lang="python">
 +
cat final.txt | shuf > final_mélangé.txt
 +
</syntaxhighlight>
 +
Mélange toutes les lignes.
 +
 +
Ensuite on peut garder les 20 premières lignes seulement, ce qui permettrait d'avoir , avec un peu de chance, au moins une ligne de chaque texte.

Version du 13 octobre 2019 à 15:28

Scan to OCR

Comment une machine peut-elle reconnaître du texte ?

Trouver le pourcentage de pixels noir pour détecter les blocs de texte ? Traiter chaque bloc séparément pour trouver quel alphabet il faut essayer de détecter dans quel bloc ?

Comment une machine peut-elle "lire" une page ?

Si elle reconnaît les caractères, elle ne reconnaît pas les mots. Elle lirait donc les caractères un par un dans un bloc donné, puis passerait au suivant sans interruption. Il y aurait une sorte de condensation de tous les caractères dans une sorte de ligne infinie sans pause (comme le résultat de base que donne Tesseract : un fichier texte avec la chaîne de caractères reconnus sans interruption). C'est ce que la machine "peut" lire. Puisque la machine ne comprendrait pas non plus le sens des lettres (bien qu'un logiciel de text-to-speech reconnaît les mots et peut les lire) , (elle les connaît sous forme d'Unicode), elle pourrait aussi lire chaque "code" Unicode de chaque caractère à la suite. Dans le document que j'ai passé dans Tesseract il y a beaucoup de langues et d'alphabets différents, donc la variante Unicode serait plus "logique" (je ne sais pas si le text-to-speech peut gérer plusieurs langues en même temps. Ceci dit, cela fait partie de la façon dont une machine fonctionne, une fois qu'elle est lancée elle ne peut pas s'arrêter pour remarquer un changement, sauf si on le lui indique. Graphiquement cela pourrait se traduire par une grille de caractères dans une fonte monospace, chacun caractère étant dans un carré de mêmes dimensions. on aurait alors du texte "matriciel", fonctionnant case par case et compliqué à lire pour un humain, qui ne saurait plus où commencer et où arrêter les mots.


c o m p l i q u é à l i r e p o u r u n h u m a i n

Pour faire lire le texte par la machine avec un programme en python, on utilise le module pypiwin32 qui permet d'importer win32com (une bibliothèque de Windows ?). Il faut l'installer avec pip (attention aux histoires de windows 32 ou 64 bits et python 32 ou 64 bits, je crois que tout marche avec les versions 32 bits python).

import win32com.client as wincl
speak = wincl.Dispatch("SAPI.SpVoice")
speak.Speak(lecture)

Ce bout de script permet de lire le contenu de la variable lecture, qui est un chaîne de caractère tirée d'un fichier texte. On peut aussi écrire entre guillemets doubles les mots que l'on souhaite faire lire par le text-to-speech de Windows (je n'ai pas encore trouvé comment lire dans une langue différente ou avec une voix différente que la voix par défaut)

Traiter des fichiers avec Tesseract

Test du jour : utiliser Tesseract pour détecter toutes les langues en même temps Utiliser Google traduction pour trouver quel bloc (quel alphabet) appartient à quelle langue, pour pouvoir utiliser le bon code dans Tesseract [1] : le Github de Tesseract avec tous les codes de langues prises en charge par Tesseract.

La page que j'ai scannée est un mode d'emploi/conseils d'utilisation d'un matelas IKEA, avec beaucoup d'alphabets différents en simultané :

Test1.jpg
Test2.jpg


cat 1.txt 2.txt  3.txt 4.txt > final.txt

Combine tous les textes en un seul.

cat final.txt | shuf > final_mélangé.txt

Mélange toutes les lignes.

Ensuite on peut garder les 20 premières lignes seulement, ce qui permettrait d'avoir , avec un peu de chance, au moins une ligne de chaque texte.