Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar imej kepada teks dalam python

Bagaimana untuk menukar imej kepada teks dalam python

WBOY
WBOYke hadapan
2023-04-20 11:07:061970semak imbas

    Imej Python ke teks

    Saya menggunakan python+Tesseract-OCR untuk membuat imej kecil kepada alat teks, dan reka bentuk GUI menggunakan kawalan perpustakaan tkinter

    Antara muka dan kesan ditunjukkan dalam gambar di bawah:

    Bagaimana untuk menukar imej kepada teks dalam python

    Bagaimana untuk menukar imej kepada teks dalam python

    #进一步优化  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()

    Masalah sedia ada:

    • Kadar pengecaman tidak tinggi, malah lebih sukar untuk mencapai ketepatan yang tinggi untuk aksara Cina padat. Adakah terdapat enjin OCR yang lebih baik?

    • Teks yang diiktiraf telah Selepas mengalih keluar ruang, teks boleh dioptimumkan lagi, terutamanya pemisah baris berlebihan yang perlu diproses

    Tangkapan skrin Python ke fungsi teks

    Kerana apabila mencari maklumat di Internet, saya sering Apabila saya menghadapi situasi di mana artikel tidak dapat disalin, untuk menyalin teks yang saya inginkan dengan cepat, saya ingin menulis program ular sawa untuk merealisasikan fungsi menukar tangkapan skrin menjadi teks .

    Bagaimana untuk menukar imej kepada teks dalam python

    1. Idea

    Pertama sekali, anda mesti mempunyai fungsi merakam papan kekunci (beritahu program bahawa anda sedang mengambil tangkapan skrin) - perpustakaan papan kekunci perlu menerima imej selepas mengambil tangkapan skrin - Pustaka ImageGrab Selepas mendapatkan imej, pengecaman teks diperlukan - API Pengecaman Teks AI Baidu

    2.1 perpustakaan berkaitan

    Bagaimana untuk menukar imej kepada teks dalam python2.2 Buat kelas dan tulis fungsi untuk menyimpan tangkapan skrin

    Memandangkan saya menggunakan perisian tangkapan skrin yang disertakan dengan win10, kekunci pintas tangkapan skrin ialah ‘win+shift+s’, anda boleh menukarnya secara bebas mengikut perisian tangkapan skrin yang berbeza.

    Bagaimana untuk menukar imej kepada teks dalam python2.3 Tulis fungsi untuk menukar imej kepada teks

    Mula-mula pergi ke laman web rasmi Baidu Smart Cloud untuk memohon pengecaman imej API.

    Tulis parameter ke dalam atur cara: Bagaimana untuk menukar imej kepada teks dalam python

    Tulis fungsi penukaran teks: Bagaimana untuk menukar imej kepada teks dalam python

    Bagaimana untuk menukar imej kepada teks dalam python2.5 Buat kelas semasa menjalankan

    dan panggil dua fungsi:

    Bagaimana untuk menukar imej kepada teks dalam python 2.6 Kesan

    Jalankan program dan ambil tangkapan skrin artikel dalam Perpustakaan Baidu:

    Hasilnya adalah seperti berikut: Bagaimana untuk menukar imej kepada teks dalam python

    Bagaimana untuk menukar imej kepada teks dalam pythonNota:

    Dapat dilihat dari hasil larian 2.6 kesannya masih bagus. Menyelesaikan dengan sempurna keperluan semasa saya.

    Atas ialah kandungan terperinci Bagaimana untuk menukar imej kepada teks dalam python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam