python识别图片文字、并返回文字坐标_简易OCR图片文字识别工具的进一步改进(增加显示图片的功能)...
上一篇文章中我們帶領大家制作了一個簡易的OCR圖片文字識別工具,但是,程序還有一些需要我們進一步完善的地方。比如,我們在識別文字后,如果想對照原始圖片對處理的文字進行修正操作,我們還要打開圖片,然后在圖片瀏覽器和我們的程序之間切換,以便完成我們的需求。有沒有更好的辦法呢?當然有咯,在程序中增加一個顯示圖片的功能。這樣,我們在進行修正文字錯誤時,可以對照圖片進行檢查。怎么樣?是不是很酷?現在我們來實現一下這個功能吧……
增加圖片顯示功能會更方便哦
【分析】
需要增加的是顯示圖片的功能,我們需要做下面的前期準備工作。
前期準備很重要哦
我們知道,Python的tkinter控件中有很多控件是可以用于顯示圖片的,只要是控件有image屬性的,基本上都可以用于實現這一功能。比如,Label、Button等控件,程序中我們使用Label控件進行顯示。再者,如果在Label控件中顯示圖片,我們一般是將圖片轉化為PhotoImage類,但是tkinter默認的PhotoImage類只能打開諸如gif、png一類的圖片,打開其它類型的圖片一般會拋出異常。我們知道,網上下載的圖片一般jpg、gif、png等等各種類型,因此,我們需要第三方庫支持。程序中我們使用PIL模塊中的Image和ImageTk類來創建圖像類,這兩個類基本可以處理常見的圖像類型了。最后,我們需要知道,每一個可以布局的控件都有一個pack_forget()方法,用于暫時不顯示該控件。但是這個控件一旦創建還是存在于內存中的。如果需要,我們就使用pack()方法對控件進行顯示。知道了這三點內容,我們就可以實現程序了。在此之前,需要安裝第三方庫PIL,使用pip install pillow進行安裝即可。【程序實現】
廢話不多說,我們直接開始編碼吧,對于重復的代碼,本篇不再展示,主要記錄一下跟上一篇《使用Python制作一個簡易的OCR圖片文字識別工具》不同的新增加的代碼。
首先導入模塊: from PIL import Image, ImageTk
我們在類變量的初始化代碼中增加下面標注的幾行內容,如圖所示。
變量初始化新增代碼
上面圖片中的英文翻譯過來是這樣的:執行此操作時,請確保保留對圖像對象的引用,以防止被Python的內存分配器垃圾收集。由此我們知道部分Image控件不顯示圖片的內容,但也不報錯的原因是圖像對象被內存分配器進行了垃圾回收,因為剛開始如果沒有在全局域中對該對象進行聲明,如果對象存在于函數或者自定義類中,引用次數為0的對象一般會被內存分配器進行回收,導致圖片不顯示。
然后,我們在創建具體控件,具體代碼如下圖所示。
增加按鈕控制圖片顯示
我們看一下對于新增加的按鈕的響應事件函數。
顯示\隱藏圖片按鈕響應函數
我們看到,在圖片顯示事件中我們使用了一個函數self.resize(400, 300, self.image),下面我們看下這個定義函數內容。如下圖所示。
設置圖片大小隨控件展示
好了,編碼到此為止。下面我們看看程序實現效果。
【效果展示】
程序打開,顯示圖片按鈕不可用(state=DISABLED)。如下圖所示。
程序打開效果
然后我們從本地選擇一幅圖片,還是之前李白的《將進酒》吧。打開看下效果。如下圖所示。
圖片內容成功獲取并展示
然后我們看下新增的顯示圖片的功能。關閉提示信息后,打開文件按鈕文字相應發生變化,且顯示圖片按鈕變為可用。效果如圖所示。
關閉提示信息后顯示圖片
單擊隱藏圖片后,圖片即可隱藏。如下圖所示。
隱藏圖片效果成功實現
換個背景看看。
程序執行最終效果
【總結】
今天帶大家完成了應用中顯示、隱藏圖片功能,可以方便我們使用圖片和文本框的文本進行修正。我們知道,任何一款好的圖像識別算法,不可能做到圖像識別正確率100%,這時,我們這個功能的實現就方便了用戶更好的進行修正文本。但是,作為Python程序設計,這一塊還是存在一些可以改進的地方,如果圖片內容太小,或者圖片分辨率不夠高,我們在原始比例下對圖片的文字信息可能看得不是很清楚,這就需要我們對這一程序進行進一步改進,讓圖像可以縮放,這樣是不是就更方便了?后續我們會實現這一功能。感興趣的讀者請持續關注,后續會有精彩內容哦,歡迎大家留言討論。
轉載請注明出處(百家號:Python高手養成)
總結
以上是生活随笔為你收集整理的python识别图片文字、并返回文字坐标_简易OCR图片文字识别工具的进一步改进(增加显示图片的功能)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梁世豪的读书计划
- 下一篇: python之装饰器详解