Python程序識別圖片和PDF上的文字(1)

2021-02-15 PythonABC

處理PDF文件那部分介紹的第三方模塊PyPdf2隻能識別PDF文件的英文字符,對中文字符沒有辦法。接下來的帖子介紹一種識別PDF非英文文字的方法:先引進第三方模塊Wand把PDF文件轉成圖片,再引進第三方模塊PyOCR或Pytesseract把圖片上的文字識別出來。Wand、PyOCR或Pytesseract為python可以引入的第三方模塊,是外面的包裝,包裹的內核是圖片處理的軟體包Imagemagick和光學字符識別OCR(Optical Character Recognistion)軟體包,比如Tesseract。這個帖子介紹如何安裝Tesseract。

字符識別OCR把圖片上的文字自動識別出來,轉換成我們能處理的字符串。這裡使用Tesseract這個軟體包來做OCR,Tesseract最初由惠普開發,後來谷歌接受過來繼續支持。Tesseract支持100多種書面語言,並且可以被訓練繼續擴充。Tesseract沒有圖形化界面,用命令行執行,作為內核被其他有圖形化界面的程序調用。我們先來安裝Tesseract,然後用命令行運行Tesseract識別圖片上的文字。

Mac上可以用homebrew安裝Tesseract,homebrew是一個安裝工具,幫助我們安裝應用到Mac上。homebrew不是Mac自帶的,所以自己需要先被安裝。搜尋引擎上搜install homebrew,找到homebrew的主頁brew.sh,主頁上赫然掛著安裝homebrew的辦法,把:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"貼到terminal終端窗口上,按照提示輸入admin的密碼後會自動下載安裝homebrew:

homebrew成功安裝完畢後,在terminal輸入:brew install tesseract 安裝tesseract:

安裝完畢後可用tesseract -v驗證,順便查看下版本:

從版本後面跟著的圖片格式庫可以看出tesseract支持jpeg、png和tiff為擴展名的圖片。 接下來試著識別圖片example_01上的英文字母:

在terminal上敲入命令tesseract 路徑+文件名 stdout,將識別結果輸出到屏幕上:

若要把識別結果保存到文檔中,用文檔名替換掉stdout:

tesseract /users/PythonABC/Documents/OCR/example_01.png output

則在當前文件夾(跟代碼同一個文件夾)下,可以看到新生成的文件output.txt,內容是圖片上識別出來的內容。

 

識別準確與否跟圖片文字的背景有很大關係。這裡用的背景是白色,字黑色的,是最利於識別的一種情況,實際上顯然不可能這麼完美。背景混雜(識別時的雜音)的文字識別起來難度係數增大,準確率下降,可以通過訓練識別庫來提高tesseract的識別率。如何訓練這裡不提及,有興趣的朋友可以參看tesseract的技術文檔,也可以下載資深人士訓練好分享出來的識別庫。事實上安裝tesseract默認安裝了英文字符訓練庫,幫助識別英文、英文標點符號和數字。

example_02.png如下:

現在來看tesseract能否識別出圖片上的中文字,example_02在當前文件夾下:

識別不出來的原因是沒有安裝中文訓練庫,安裝中文訓練庫的步驟如下:

1.下載中文訓練字庫

搜尋引擎上搜索:tesseract Chinese training data,去tesseract的github的頁面上下載中文簡體字庫:chi_sim.traineddata,當然如果還需要識別其他語言,可以把其他訓練庫一併下載了。

2.把下載的字庫拷貝到tessdata目錄下

terminal終端窗口上敲入命令brew list tesseract查看tessdata的位置:

最後一行就是tessdata的目錄,把下載的目錄拷貝到這個目錄下,如果是           在Mac的terminal上可以用cp命令:

3.設置環境變量TESSDATA_PREFIX為tessdata路徑名,否則用加了指    定語言參數的tesseract命令識別圖片上的文字時會出現找不到訓練庫的        錯誤

錯誤提示裡有一句「Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory.」,所以設置環境變量TESSDATA_PREFIX為tessdata的路徑:

4.識別圖片裡的中文字符

命令的格式是:

        tesseract路徑+文件名輸出-l 語言代碼

默認識別的是英文字符,如果圖片上有其他文字需要用語言參數-l說明。下載的語言訓練庫文件可能是jpn.traineddata(日語)、deu.traineddata(德語)、chi_sim.traineddata(簡體中文)或sim_tra(繁體中文)等等,語言代碼取文件名部分(jpn、deu、chi_sim或sim_tra)。

對example_02.png上的文字識別見圖

另外tesseract命令參數是講究順序和不可省略的的,比如寫成:

tesseract example_02.png -l chi_sim 是會出錯的:

tesseract是有局限性的,對文字背景有要求,對像素有要求……需要特徵抽取技術、機器學習技術和深度學習技術,用於識別的訓練字庫是可以被訓練升級的,有興趣的朋友可以自行研究

微信公號文章發表後只能修改五個字,所以PythonABC公號文章裡的錯誤改正或內容補充會放在pythonabc.org的網站上。這篇帖子明天才往網站上貼,正在重看笑傲江湖ing,得抓緊一切時間(^_^)若有錯誤還望見諒,明天會在網站上的帖子作修改噠。

請前幾天留言發問的朋友發郵件到pythonabc@mail.com,已經過了回復期限,所以回復不了了

即將推出的Python ABC教程對PythonABC視頻內容進行了梳理,修正了發現的錯誤、對代碼做了些許優化、替換掉視頻中的英文注釋、替換掉國內不能訪問的資源、添加windows上的設置和運行……敬請關注,謝謝

相關焦點

  • Python程序圖片和pdf上文字識別實例一二
    識別圖片上的文字。處理方式就是:1、將圖片的顏色模式轉成灰度模式,再用OTSU做二值化處理2、將處理結果保存成臨時圖片文件3、調用pytesseract識別臨時圖片上的文字,識別完畢後刪掉臨時圖片選擇要識別文字的圖片調用tkinter打開圖形化對話窗口,tkinter是python內置模塊,可直接引進不必安裝。
  • 通過Python寫一個OCR圖片識別小程序
    在我們的日常辦公中,經常有識別圖片中的大段文字的需求。
  • 利用python自動為PDF添加書籤目錄
    1 PyPDF2 簡介 PyPDF2是python用來處理PDF文檔的第三方包,PyPDF2包可以提出PDF文檔數據,也可以對PDF文檔進行處理,它支持的python版本為2.6、2.7或python3。
  • Python文字識別OCR案例:搞定PDF掃描件和圖片文字內容(原始碼)
    文字識別OCR技術目前已經是一種常見的Data Entry實現方式,自動識別PDF掃描件和圖片上的文字,然後用於數位化和自動化系統,實現Saving和工作效率和質量上的提高,這是一種技術趨勢。第二、PDF文件和圖片上所用的字體問題就算是採取了高精度的拍照或者掃描設備,拿到了清晰度和對比度都很高的PDF掃描件或者圖片文件,有些時候也無法保證100%的文字識別率,為什麼呢?要看用了什麼樣的字體。
  • 【Python基礎】python使用PyPDF2和pdfplumber操作pdf
    1、PyPDF2和pdfplumber庫介紹PyPDF2官網:PyPDF2官網 ,可以更好的讀取、寫入、分割、合併PDF文件;pdfplumber官網:pdfplumber官網,可以更好地讀取PDF文件內容和提取PDF中的表格;這兩個庫不屬於python標準庫,都需要單獨安裝;2、python提取PDF文字內容1)利用pdfplumber提取文字
  • 什麼軟體可以識別圖片上的文字?並且識別圖片上的文字比較快?
    什麼軟體可以識別圖片上的文字?作為一枚文字編輯,朋友小張常常從生活中尋找寫作靈感。有時候,看到圖片上有合適文案的話,她都會把其中文字給抄錄下來保存到電腦上。但久而久之,小張發現這樣摘抄圖文字的方法效率太低,一字一句地敲打鍵盤實在是太慢了。
  • python 實用程序 | PDF 轉 Word
    因為 pdf 文檔裡面的內容有很多,如果全部列印的話,費用還是挺高的。所以她想把裡面的內容格式修改下,比如行間距,字間距等等。通過這樣的修改,可以把文檔的頁數減少很多,這樣就省下不少的錢。於是乎我就想到了利用 python 來寫個程序,把 pdf 轉成 word 文檔。秉承著不要重複造輪子的想法,我首先在網上搜索了下。果然已經有人寫好了,我們直接拿來用就行。
  • 【收藏】圖片轉成文字的方法總結,python批量圖片轉文字信息參考源碼
    在日常辦公或者學習中,往往存在這樣一個工作場景,比如,「老王,我這裡有一張圖片,你把裡面的文字信息給我整理出來」,都2021年了,你真的還在手敲圖片文字信息麼?那麼還不趕緊收藏這篇秘籍,這裡本渣渣總結了三種方法,教你如何將圖片上的文字信息提取出來,圖片轉成文字信息的方法。
  • 在線文字圖片識別工具
    騰訊優圖,提供圖片整體文字的檢測和識別服務,返回文字框位置與文字內容。支持多場景、任意版面下整圖文字的識別,以及中英文、字母、數字、常見字符的識別。百度文字識別,支持多場景下的文字檢測識別。OCRMaker,提供在線文字識別,文字提取等服務。文字在線識別工具,提供圖像文字識別、提取圖片文字、pdf文字識別、掃描文件識別服務、pdf轉Word文檔等服務,輸出結果支持PDF、Word和Txt格式等。圖片轉文字,提供在線圖片轉換成文字,在線圖片識別文字等服務。
  • 以編碼的方式從PDF中提取圖片和文字
    出於各種原因,我們有時候要提取PDF中的文字或者圖片,這時應該用什麼辦法呢?如果只是其中的一段話或者某張圖,當然是用滑鼠選中要複製的內容,Ctrl+C,Ctrl+V了。但是,如果這是一份幾百頁的PDF,要把全部的文字和圖片複製下來就不是那麼輕鬆了。
  • 圖片文字識別軟體 – 在線圖片文字識別
    圖片文字識別軟體 – 在線圖片文字識別圖片文字識別軟體 – 在線圖片文字識別。
  • PDF轉EXCEL,python的這個技能知道嗎?
    當在pdf上看到自己想用的表格,卻無法將其複製下來的時候,只能默默地打開excel對照著pdf表格的形式敲打出來,既費時又費力!這裡介紹如何用python程序將pdf上的表格自動轉化為excel表!1.使用的庫簡單介紹一下要使用的庫:pdfplumber 和xlwt1.pdfplumberpdfplumber使用來解析pdf的文字與表格。
  • 利用Python來識別並提取圖片中文字
    文字識別是利用計算機自動識別字符的技術,是模式識別應用的一個重要領域。文字識別一般包括文字信息的採集、信息的分析與處理、信息的分類判別等幾個部分。文字識別可應用於許多領域,如閱讀、翻譯、文獻資料的檢索、信件和包裹的分揀、稿件的編輯和校對、大量統計報表和卡片的匯總與分析、銀行支票的處理、商品發票的統計匯總、商品編碼的識別、商品倉庫的管理,以及水、電、煤氣、房租、人身保險等費用的徵收業務中的大量信用卡片的自動處理和辦公室打字員工作的局部自動化等。以及文檔檢索,各類證件識別,方便用戶快速錄入信息,提高各行各業的工作效率。
  • 教你一款圖片文字識別軟體,快速提取文字!
    掃描儀可以做的只是創建圖片或者一張黑白或者彩色的圖像文檔。為了從掃描文檔、PDF或者數碼圖片中提取文字和數據,你需要OCR軟體識別圖片上的信息,從單詞到句子,然後變成整個可以編輯的文檔。今天介紹這些軟體支持圖片轉文本(Text)、圖片轉表格(Excel)、PDF轉演示文稿(PowerPoint)、圖片轉文檔(Word)。
  • python必備書籍pdf下載
    本書共15章,在結構上可以分為兩部分:第壹部分包括第1~10章,探討面向對象的基本概念,比如封裝、多態、繼承等;第二部分包括第11~15章,專注於將這些概念應用於一些通用的面向對象技術中,並結合了一些實用的應用程式。
  • 手把手教你用PaddleOCR與PyQT實現多語言文字識別的程序
    他了解到這屬於OCR文字識別技術,OCR實現了對圖片中的文字進行提取、識別。這個軟體是在飛槳開源的PaddleOCR文字識別套件基礎上開發的,同時還發現這個工具還有這些功能:支持漢語, 日語, 英語, 韓語, 德語, 法語的文字識別支持截圖, 加載本地圖片進行識別。
  • 怎麼把圖片轉換成文字?建議收藏
    故事發生在畢業前,班群上有人匿名問,想把圖片上的文字轉成Word文檔,不知道有什麼快速的辦法。
  • 手機怎樣識別圖片上的文字?文字如何翻譯成英文
    在工作中我們會遇到各種各樣格式的文件,其中圖片格式文件最多,如果我們想要將圖片中的文字提取出來怎麼操作?圖片中文字較少手寫敲打還行,但是文字過多進行打字就太費神費力了,怎樣可以識別圖片上的文字呢?識別文字如何翻譯成英文?遇到這種問題,其實利用手機上一些小工具就可以輕鬆解決!
  • python應用之人臉識別及人臉解鎖
    展示一些python的應用場景之前,我已和大家展示了Gui圖形界面----圖像文字識別,2-人臉比對既然程序能夠識別出人臉,接下來,做人臉比對也是順理成章的了我們把待鑑定的人臉圖片,和已知的人臉進行比對我們接下來的任務
  • 覺得PDF轉圖片APP搗鼓不明白的,可以試試PDF轉圖片小程序
    這一周每天都在為找不到一款好用的PDF轉圖片APP生氣?別著急!今天就分享給你一款使用起來比較簡單的PDF轉圖片小程序,我覺得只要是認識字的就都會用! 最近因為疫情,很多學校的期末考試都轉為了線上考試,可對於一些無法熟練操作PDF轉圖片APP的童鞋來說真的太耽誤事了,線上考試的影響就是得在電腦上打字敲完論述題然後再截圖傳到ipad上寫計算,還得對著課件抄公式,最後再傳回電腦插入圖片,最後還要把word轉成PDF,或者是PDF轉成其他格式,考試時間都不夠用來折騰的。