Maison > Article > développement back-end > Comment convertir des images en texte en python
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 :
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
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.
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.1 Importer les bibliothèques associées
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.
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.
Écrivez les paramètres dans le programme :
Écrivez la fonction de conversion de texte :
2.5 Créez une classe lors de l'exécution de
et appelez deux fonctions :
2.6 Effet
Exécutez le programme et prenez une capture d'écran d'un article de la bibliothèque Baidu :
Les résultats sont les suivants :Remarque :
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!