[PYTHON] Marge les caractères du fichier boîte généré par jTessBoxEditor ligne par ligne [Tesseract]

Aperçu

C'était très gênant de fusionner des caractères dans le fichier de boîte généré par jTessBoxEditor, donc je l'ai créé. Je ne savais pas si marge améliorerait la précision, mais je l'ai écrit comme un service commémoratif.

conditions

Créez le fichier suivant. Collez ce contenu dans jTessBoxEditor pour générer des fichiers tiff, des fichiers box, etc.

text.txt


lettre
tester
la programmation
mgs

programme

Ce programme régénère un fichier boîte qui marge la chaîne de caractères définie dans "text.txt" ligne par ligne dans le fichier boîte. Remplacez le fichier généré par le fichier boîte généré avec le fichier tiff et spécifiez-le lors de l'entraînement avec jTessBoxEditor.

sample.py


import shutil

def read_words(input_file):
    with open(input_file, "r") as f:    
        data = [ t.replace("\n", "") for t in f.readlines()  ]  

def marge_box(input_file, words):
    with open(input_file, "r") as f:    
        data = [ t.replace("\n", "").split(" ") for t in f.readlines()  ]
        
        res = []
        start = 0
        for word in words:
            length = len(word)
            end = start + length
            tmp = data[start:end]
            print("word", word)
            print("start", start)
            print("end", end)
            print("length", length)
            
            a = [t[1] for t in tmp]
            b = [t[2] for t in tmp]
            c = [t[3] for t in tmp]
            d = [t[4] for t in tmp]
            e = [t[5] for t in tmp]
            a = a[0]
            b = min(b)
            c = max(c)
            d = max(d)
            e = e[0]
            print("abcde", [a, b, c, d, e])
            res.append([word, a, b, c, d, e])
            start += length
        
        shutil.copy(input_file, "copy_" + input_file) #Copiez le fichier d'origine en tant que sauvegarde
    
    with open(input_file, "w", encoding='utf-8') as f:  
        for t in res:
            print(" ".join(t), file=f)

if __name__ == "__main__":
    words = read_words("text.txt")
    marge_box("~~.box", words) #Spécifiez le fichier de boîte généré par jTessBoxEditor

Recommended Posts

Marge les caractères du fichier boîte généré par jTessBoxEditor ligne par ligne [Tesseract]
Lisez le fichier ligne par ligne avec Python
Lisez le fichier ligne par ligne avec Python
Google recherche la chaîne sur la dernière ligne du fichier en Python
Lire la sortie standard d'un sous-processus ligne par ligne en Python
L'histoire du "trou" dans le fichier
Tracé de la droite de régression par tracé des résidus
Comment mettre un numéro de ligne au début d'un fichier CSV