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