使用一行Python代碼從圖像讀取文本

2021-01-07 人工智慧遇見磐創

處理圖像不是一項簡單的任務。對你來說,作為一個人,很容易看著某樣東西然後馬上知道你在看什麼。但電腦不是這樣工作的。

對你來說太難的任務,比如複雜的算術,或者一般意義上的數學,是計算機毫不費力就能完成的。但在這裡,情況正好相反——對你來說很瑣碎的任務,比如識別圖像中的貓或狗,對電腦來說真的很難。在某種程度上,我們是天造地設的一對。至少現在是這樣。

雖然圖像分類和涉及到一定程度計算機視覺的任務可能需要大量的代碼和紮實的理解,但是從格式良好的圖像中讀取文本在Python中卻是簡單的,並且可以應用於許多現實生活中的問題。

在今天的帖子中,我想證明這一點。雖然會安裝一些庫,但不會花很多時間。這些是你需要的庫:

OpenCVPyTesseractOpenCV

現在,這個庫將只用於加載圖像,實際上你不需要事先對它有太多了解(儘管它可能有幫助,你將看到為什麼)。

根據官方文件:

OpenCV(開源計算機視覺庫)是一個開源的計算機視覺和機器學習軟體庫。OpenCV的目的是為計算機視覺應用提供一個通用的基礎結構,並加速機器感知在商業產品中的使用。OpenCV是bsd許可的產品,OpenCV使企業可以輕鬆地使用和修改代碼

簡而言之,你可以使用OpenCV來做任何類型的圖像轉換,這是一個相當簡單的庫。

如果你還沒有安裝它,那麼它將只是終端中的一行:

pip install opencv-python差不多就是這樣。在此之前,一切都很簡單,但這種情況即將改變。

PyTesseract

這個庫到底是什麼東西?根據維基百科:

Tesseract是用於各種作業系統的光學字符識別引擎。它是免費軟體,根據Apache許可2.0版發布,自2006年以來由Google贊助開發。

我敢肯定,現在有更多複雜的庫可用,但是我發現這個庫運行良好。根據我自己的經驗,該庫應該能夠從任何圖像中讀取文本,但前提是該字體不會使你連連看都看不懂。

如果無法從你的圖像中讀取文字,花更多的時間使用OpenCV,應用各種過濾器使文本高亮。

現在安裝在底部有些麻煩。如果你使用的是Linux,則全部歸結為幾個sudo-apt get命令:

sudo apt-get updatesudo apt-get install tesseract-ocrsudo apt-get install libtesseract-dev我用的是Windows系統,所以這個過程有點乏味。

首先,打開這個URL:https://github.com/UB-Mannheim/tesseract/wiki下載32位或64位的安裝程序:

安裝本身很簡單,只需單擊幾次Next。是的,你還需要做一個pip安裝:

pip install pytesseract接下來要需要告訴Python Tesseract安裝在何處。在Linux機器上,我不需要這樣做,但在Windows上是必需的。默認情況下,它安裝Program Files。

如果你做的一切正確,執行這些代碼應該不會產生任何錯誤:

獲取文本

讓我們從一個簡單的開始。我找到了一些免版稅的圖片,裡面有一些文字,第一個是這樣的:

它應該是簡單的一個,有可能Tesseract會讀那些藍色的「對象」作為括號。讓我們看看會發生什麼:

我的猜測是正確的。不過,這不是一個問題,你可以使用一些Python技巧輕鬆地解決這些問題。

下一個可能更棘手:

我希望它不會檢測到硬幣上的「B」:

看起來效果很好。

現在輪到你把它應用到你自己的問題上了。如果文本與背景混合,OpenCV技能在這裡可能是至關重要的。

在你離開之前

對計算機來說,從圖像中讀取文本是一項相當困難的任務。想想看,電腦不知道字母是什麼,它只對數字有效。在引擎蓋後面發生的事情一開始可能看起來像一個黑盒子,但我鼓勵你進一步研究,如果這是你感興趣的領域。

我並不是說PyTesseract每次都能很好地工作,但是我發現即使在一些比較複雜的圖像上它也足夠好。但不是所有情況都很好,有時候需要一些圖像處理需要使文本高亮讓其相對於背景更加突出。

參考文獻

https://opencv.org/about/https://en.wikipedia.org/wiki/Tesseract_(software)

相關焦點

  • 一行Python代碼能實現什麼喪心病狂的功能?
    這個數據結構,自然是 numpy 的 ndarray 對象,讀取圖像文件我習慣使用 PIL。(img)6data = np.stack(data, axis=0)我把這些代碼寫成一行,卻毫無晦澀艱深之感,仍然像詩歌一樣優美、像自然語言一樣通俗!
  • opencv-python獲取圖像:面向對象與面向過程
    獲取圖像的方式有:1,讀取本地圖片,2,調用筆記本自帶攝像頭或usb攝像頭,3,調用網絡攝像頭。運行環境:win10系統 python==3.6 opencv-contrib-python== 4.1.0第一行「# -*- coding: utf-8 -*-」 告訴Python解釋器,按照UTF-8編碼讀取原始碼"""import
  • 使用文件對象讀取Python文件內容
    使用open函數可以打開文件並返回一個文件對象,返回的文件對象用來讀取和寫入文件內容。那麼,如何使用文件對象來讀取文件內容呢?如何讓讀取的文件內容初始化一個Python列表呢?文本文件和二進位文件使用文件對象讀取文件內容時,要根據文件的不同存儲類型選擇不同的讀取方式。
  • 基於python的大數據分析-pandas數據讀取(代碼實戰)
    書籍推薦《大話軟體測試》出版啦,內容包括但不限於性能、自動化、接口、安全、移動APP非功能測試、抓包、loadrunner、jmeter、soapui、Appium、python
  • 如何讀取文本數據
    但是python不一樣,因為它有豐富的第三方庫。只要你會用這個庫,讀取文件就可以說是輕而易舉了。        1 2 3        2 3 4        3 4 5雖然我在寫教程,但是我推薦大家先百度一下。因為我每次做的時候也是先百度一下。python的庫實在是太多了,根本記不住。
  • 數據科學常用文件類型、讀取、中文編碼Python代碼詳解(14k字經典收藏版,附周五新聞四則)
    現在,讓我們討論一下下方這些文件格式以及如何在 Python 中讀取它們:逗號分隔值(CSV)、XLS、XZIP、純文本(txt)、JSON、XML、HTML、圖像分層數據格式、PDF、DOCX、MP3、MP4。
  • 127、使用pandas讀取文本文件
    python小白社區默言_e0a2同學,是一個持之以恆的好同學。以下是他的作品。pandas提供了一些用於將表格型數據讀取為DataFrame對象的函數,其中常用read_csv和read_table讀取文件。
  • 使用Python圖像處理庫Pillow處理圖像文件
    使用Python語言解決實際問題時,往往需要使用由第三方開發的開源Python軟體庫。本案例使用圖像處理庫Pillow中的模塊、對象來處理圖像:實現讀取圖像、獲取圖像信息、調整圖像大小、旋轉圖像、平滑圖像、剪切圖像等基本圖像處理任務。
  • 介紹一個Python 包,幾行代碼可實現 OCR 文本識別!
    文字 OCR 識別技術現在已經相當成熟了,無論 其 準確度還是識別速度 都能夠滿足我們的日常需要;今天給大家介紹一個 Python 包,該包的主要功能就是用於 OCR 識別的,包的名字叫 Pyteeseract,藉助這個包幾行代碼就能快速識別一張文本圖片Pytesseract 包是由 開源工具
  • Python數據分析:pandas讀取和寫入數據
    平時工作中,我們會接觸到不同的數據文件,比如很常見的excel文件(後綴名為xls和xlsx),csv、txt等文本文件,json文件以及sql文件等等。pandas讀取這些數據文件的方法如表格所示:01讀取寫入文本文件read_csv()方法用來讀取 csv格式的數據文件,read_table()方法則是讀取通用分隔符分隔的數據文件,它們的參數相同。
  • Python實操!速收藏!學習使用Python創建文本編輯器應用程式!
    朋友們,大家好,這次再次與大家見面,這一次將發表一篇文章,介紹如何使用Python Tkinter創建文本編輯器。Tkinter是一個Python庫,在你想要創建應用程式時非常有用。如何製作此文本編輯器應用程式呢?
  • CVPR 2020文本圖像檢測與識別論文/代碼
    Auto-Encoding Twin-Bottleneck Hashing論文:Auto-Encoding Twin-Bottleneck HashingCVPR 2020 所有文本圖像(text)相關論文,主要分為手寫文本和場景文本兩大方向,總計16篇,對文獻進行了細緻的分類,大部分論文是圍繞識別問題的研究
  • Python | 看得到,取得到,才是數據(二):幾行代碼搞定PDF文件中表格數據讀取
    幾行代碼搞定PDF文件中表格數據讀取!相關閱讀如何用Python幫你高效地翻憑證?Python整合平臺Anaconda的安裝和使用如何批量在多個word文檔中查找線索關鍵詞?看得到,取得到,才是數據:pandas 也可爬蟲?
  • OpenCV-Python 讀取顯示圖像|五
    目標在這裡,你將學習如何讀取圖像,如何顯示圖像以及如何將其保存回去你將學習以下功能:cv.imread(),cv.imshow(),cv.imwrite()(可選)你將學習如何使用Matplotlib顯示圖像使用OpenCV讀取圖像使用cv.imread()函數讀取圖像。圖像應該在工作目錄或圖像的完整路徑應給出。
  • 如何使用Python獲取運營數據之文本文件篇
    使用Python獲取數據,目前主要的方法集中在文本文件、Excel文件、關係型和非關係型資料庫、API、網頁等方面。本文先來給大家分享如何使用Python讀取數據1.使用read、readline、readlines讀取數據Python可以讀取任意格式的文本數據,使用Python讀取文本數據的基本步驟是:1)定義數據文件;
  • 人生苦短,我用pandas一行代碼讀取4種常見文件
    一些好用的方法,也比較基礎,pandas讀取文件和資料庫,保存文件和資料庫,本節先講讀取文件
  • 三步即可完成的OCR入門 | Python版
    最後,我們將以一個代碼片段結尾,該代碼片段涵蓋將OCR與Google文本到語音模塊結合使用的功能。註:最後的代碼將是一個結合使用文本語音轉換和字符識別的代碼。這是語言模型設計系列的第二部分。如果您對gTTS模塊沒有任何線索,可以查看《使用Python三步完成文本到語音的轉換》。OCR究竟是如何工作的?
  • Python 圖像處理 OpenCV (1):入門
    安裝的時候選擇自己喜歡的版本裝就好了,命令如下:# opencv-python 安裝命令pip install opencv-python# opencv-contrib-pythonpip install opencv-contrib-python安裝完成後可以通過以下代碼查看安裝的版本信息:
  • python3 讀取XML文件的入坑經歷
    需要讀取xml裡的路徑,依次處理圖片所以,開始python xml文件的操作開始時使用命令行的形式,讀取xml文件的路徑,然後判斷文件是否存在,存在,就解析。 問題分析命令行參數傳錯了,xml_file_path = sys.argv[1],才是傳入的xml文件的路徑,如果是sys.argv[0],那麼,是執行的python文件本身!!所以,文件存在,但是,文件解析失敗!!並且是第一行第一列解析失敗!!,最後我把XML文件刪的只剩一行,依舊解析失敗!!開始懷疑人品了。文件編碼,怎麼改都不行!
  • opencv-python圖像預處理-濾波
    為了消除外界環境對圖像採集的幹擾,增強圖像的邊緣及灰度跳變的部分,使圖像變得清晰以及提高圖像處理速度需要對圖像進行預處理操作,主要是對圖像進行濾波和增強操作。使用的方法可以分為空間域處理和頻率域處理兩類。空間域指圖像平面本身,這類圖像處理方法用各種模板直接與圖像進行卷積運算,實現對圖像的處理。