Maison  >  Article  >  développement back-end  >  Comment convertir des images en texte en python

Comment convertir des images en texte en python

WBOY
WBOYavant
2023-04-20 11:07:062056parcourir

    image python en texte

    En utilisant python + Tesseract-OCR pour créer un petit outil de conversion d'image en texte, la conception de l'interface graphique utilise le contrôle de la bibliothèque tkinter

    Voir l'image ci-dessous pour l'interface et l'effet :

    Comment convertir des images en texte en python

    Comment convertir des images en texte en python

    Problèmes avec
    #进一步优化  1. 底部添加label   2.对识别后的文本处理,去空格
    
    
    from PIL import Image as PImage
    from PIL import ImageTk
    import pytesseract
    from tkinter import *
    from tkinter import filedialog
    from tkinter.scrolledtext import ScrolledText
    import re
    
    # 将图片内容翻译为文字,显示在文本框内
    def trans():
        contents.delete('1.0', END)
        transTxt = pytesseract.image_to_string(PImage.open(filePath.get()),lang='chi_sim')
        #对transTxt进行处理  去空格,换行符去重
        transTxt = transTxt.strip('\n\r')   #无参数可以删除开头结尾的空格\n\t\r
        print(transTxt)
        contents.insert( INSERT, transTxt.replace(' ','').replace('\n\n','\n').replace('\r',''))
    
    #打开图片文件,显示路径,并将图片展现
    def openfile():
        filename.delete('1.0', END)
        filePath.set(filedialog.askopenfilename())
        filename.insert(1.0,filePath.get())
        org_img = PImage.open(filePath.get())
        #调整图片显示大小 600*800
        w,h = org_img.size
        if w>600:
            h=int(h*600/w)
            w=600
        if h>800:
            w=int(w*800/h)
            h=800
        img = ImageTk.PhotoImage(org_img.resize((w,h)))
        showPic.config(image=img)
        showPic.image = img       #保持一个引用才能显示图片,tkinter的BUG
        
    
    #设置主窗口
    top = Tk()
    top.title("OCR图片转文字  引擎:Tesseract-OCR  Made by: kaivis")
    #top.iconbitmap("./pic/y1.ico")
    top.geometry("1200x800")
    
    filePath=StringVar()
    
    bt_img1 = ImageTk.PhotoImage( file= "./pic/Outbox1.png")
    bt_img2 = ImageTk.PhotoImage( file= "./pic/bt_img2.png")
    
    #第一个窗体
    frame1 = Frame (top, relief=RAISED, borderwidth=2)
    frame1.pack(side=TOP, fill=BOTH,  ipady=5, expand=0)
    Label(frame1,height=1,text="图片路径:").pack(side=LEFT)
    filename = Text(frame1,height=2)
    filename.pack(side=LEFT,padx=1, pady=0,expand=True, fill=X)
    Button(frame1,text="打开文件", image=bt_img1, command=openfile).pack(side=LEFT,padx=5, pady=0)
    Button(frame1,text="中文识别", image=bt_img2, command=trans).pack(side=LEFT,padx=5, pady=0)
    
    #第二个窗体
    frame2 = Frame (top, relief=RAISED, borderwidth=2)
    frame2.pack (side=LEFT, fill=BOTH,  expand=1)
    Label(frame2,text='图片显示:',borderwidth=5).pack(side=TOP,padx=20,pady=5)
    showPic = Label(frame2,text='图片显示区')
    showPic.pack(side=BOTTOM,expand=1,fill=BOTH)
    
    #第三个窗体
    frame3 = Frame (top)
    frame3.pack (side=RIGHT, fill=BOTH,  expand=1)
    #contents = ScrolledText(frame3)
    Label(frame3,text='识别结果:',borderwidth=5).pack(side=TOP,padx=20,pady=10)
    contents = Text(frame3,font=('Arial',15))
    contents.pack(side=TOP,expand=1,fill=BOTH)
    Label(frame3,text='Copyright 2021 baidu.com ALL Rights Reserved',borderwidth=5).pack(side=BOTTOM,padx=20,pady=10)
    
    top.mainloop()

     :

    • Le taux de reconnaissance n'est pas élevé, et il est encore plus difficile d'obtenir une grande précision pour les caractères chinois compacts. Existe-t-il un meilleur moteur OCR

    • ? Le texte reconnu a été fait. En supprimant les espaces, le texte peut être encore optimisé, en particulier les sauts de ligne redondants qui doivent être traités

    fonction de capture d'écran Python en texte

    Lors de la recherche d'informations sur Internet, nous rencontrons souvent des situations où les articles ne peuvent pas être copiés Afin de pouvoir copier rapidement, je veux envoyer du texte, j'ai donc voulu écrire un programme python pour réaliser la fonction de conversion de captures d'écran en texte.

    Comment convertir des images en texte en python

    1. Idée

    Tout d'abord, vous devez avoir la fonction d'enregistrement du clavier (faire savoir au programme que vous prenez une capture d'écran) - la bibliothèque de clavier doit recevoir l'image après avoir pris la capture d'écran - le La bibliothèque ImageGrab doit effectuer la reconnaissance de texte après avoir obtenu l'image - API de reconnaissance de texte Baidu AI

    2. Implémenter

    2.1 Importer les bibliothèques associées

    Comment convertir des images en texte en python

    2.2 Créer une classe et écrire une fonction pour enregistrer des captures d'écran

    Étant donné que j'utilise le logiciel de capture d'écran fourni avec Win10, le raccourci clavier de capture d'écran est « ;win+shift+s’, vous pouvez le modifier librement en fonction de différents logiciels de capture d'écran.

    Comment convertir des images en texte en python

    2.3 Écrivez une fonction pour convertir des images en texte

    Allez d'abord sur le site officiel de Baidu Smart Cloud pour demander une API de reconnaissance d'image.

    Comment convertir des images en texte en python

    Écrivez les paramètres dans le programme :

    Comment convertir des images en texte en python

    Écrivez la fonction de conversion de texte :

    Comment convertir des images en texte en python

    2.5 Créez une classe lors de l'exécution de

    et appelez deux fonctions :

    2.6 Effet Comment convertir des images en texte en python

    Exécutez le programme et prenez une capture d'écran d'un article de la bibliothèque Baidu :

    Les résultats sont les suivants :

    Comment convertir des images en texte en python

    Remarque : Comment convertir des images en texte en python

    Il ressort des résultats en cours d'exécution de la version 2.6 que l'effet est toujours bon. Répond parfaitement à mes besoins actuels.

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer