Python文字識別OCR案例:搞定PDF掃描件和圖片文字內容(原始碼)

2021-02-13 韓思工作室

文字識別OCR技術目前已經是一種常見的Data Entry實現方式,自動識別PDF掃描件和圖片上的文字,然後用於數位化和自動化系統,實現Saving和工作效率和質量上的提高,這是一種技術趨勢。但是,目前OCR技術幾乎實現不了100%文字識別正確率。

那麼,原因何在呢?我認為最主要的原因有兩點:

第一、PDF文件和圖片的清晰度質量問題

清晰度和對比度直接影響了文字識別OCR的正確率,很多時候清晰度不夠高,人眼都無法識別,更不要說AI了。造成清晰度不夠高的原因有多種,原件的清晰度不夠高,拍攝/掃描的設備精度不夠高,後期處理過程中對清晰度造成影響等,這些都會造成要處理的PDF掃描件或者圖片文件的清晰度質量問題。

這屬於硬傷,需要從PDF掃描件或者圖片文件的生成和處理過程下手來提高清晰度和對比度。

有一個典型的例子就是,在處理髮票OCR文字識別過程中採用Centralized Operation Process(集中業務處理)的方式,購買高精度的掃描儀來掃描原件,從而提高要處理的PDF掃描件或者圖片文件的清晰度和對比度。

第二、PDF文件和圖片上所用的字體問題

就算是採取了高精度的拍照或者掃描設備,拿到了清晰度和對比度都很高的PDF掃描件或者圖片文件,有些時候也無法保證100%的文字識別率,為什麼呢?要看用了什麼樣的字體。一般而言,機打字體的識別率要高得多——目前已經達到商業應用的程度,例如發票識別、身份證等各種證件識別等,因為在這個PDF掃描件或者發票、證件圖片文件上使用的是標準字體,經過訓練後的AI可以較為準確地識別出這些需要的文字信息——接近100%。

而對於廣告字體,藝術字體,手寫字體等,問題就比較大了。當然了,在有足夠的訓練數據的情況下可以訓練AI來識別從而提高識別正確率。我最近用Google Tesseact OCR訓練了一個毛澤東字體,效果差強人意,可以識別大部分文字,但識別的正確率不夠高,原因應該是訓練數據集和訓練時間不夠。

文字識別OCR技術應該可以投入使用了,目前各個大公司都有OCR雲服務提供出來,包括百度、騰訊、阿里、谷歌Google、亞馬遜AWS和微軟Azure等,但是在商業應用中,考慮到數據的安全性和隱私性,客戶對於調用第三方的OCR服務來識別敏感數據並不放心,由此,就有了調用安裝在本地的第三方OCR識別類庫來做OCR識別的業務上的需要了。

我此前研究過利用Google Tesseract OCR本地類庫來實現OCR文字識別的案例(Google Tesseract OCR圖片文字識別應用案例(附Python原始碼)),測試結果還是不錯的。

今天抽了半天時間在此前那個案例基礎上做了一些算法上的優化,然後又用Python寫了一個桌面應用工具來調用OCR文字識別功能,實現了用桌面應用工具識別PDF掃描件和圖片文件等的功能。當然,需要安裝Google Tesseract OCR軟體和類庫。

程序運行:

選擇文件並打開一個從百度上下載下來的圖片文件(支持各種格式的圖片文件):

然後點擊窗口右下角的按鈕開始OCR識別:

簡單驗證一下,OCR文字識別的正確率還是非常高的。

繼續選擇文件並打開一個從百度上下載的PDF掃描件:

然後點擊窗口右下角的按鈕開始OCR識別:

PDF掃描件的文字內容分頁顯示出來了。

因為這兩個案例用到的PDF掃描件和圖片文件上都是標準字體,圖片質量和清晰度也較高,因此文字識別的正確率還是非常不錯的。

除此之外,OCR識別出來的文字也寫入了文本文件,用於後續的處理。

這個案例的Python程序的原始碼已經上傳到github,需要的可以直接點擊下載(下載前請點個讚,加個星star):

https://github.com/hanshiqiang365/ocr_demo

我今天做這個案例,應用了Python桌面應用開發,圖片灰度處理,Google Tesseract OCR技術實現,TXT文本文件寫入等知識和技能。

我今天開發出的這個桌面應用工具Google Tesseract OCR Tool 具有一定的商業價值。但是,目前市場上類似的產品也很多,玩法(算法)各有不同,但是根本的東西都是差不了太多的。

OCR文字識別前要做圖片處理——目的在於提高OCR識別的正確率,然後調用本地OCR工具或雲服務實現文字識別。而對於PDF掃描件要先拆分PDF文件為一頁頁的圖片,其他和圖片OCR文字識別都一樣。

算法需要不斷優化,和寫文章一樣,隨著學習和實踐,對於算法的認識越來越深,就能不斷優化算法,從而理解清楚AI的根本所在——最終目的在於為客戶創造商業價值。

故有此文,與君分享。

韓思先生,韓世強,在外企工作,英文名或者說德文名是HANS,因此筆名韓思先生。職業IT經理人,半個文化人。好讀書,好寫作,好爬山,現定居大連。從事IT行業近二十年,積累了豐富的IT軟體項目實施和管理經驗,做過程序猿,產品狗和運營貓,知識面較廣,並且喜歡總結和分享。

相關焦點

  • 輕鬆識別文字,這款Python OCR庫支持超過80種語言
    有一款軟體叫掃描全能王,想必一些小夥伴聽過,這是一個OCR集成軟體,可以將圖像內容掃描成文字。所以說,OCR作用是對文本資料的圖像文件進行分析識別處理,獲取文字及版面信息。細心觀察便可發現,身邊到處都是OCR的身影,文檔掃描、車牌識別、證件識別、銀行卡識別、票據識別等等。OCR本質是圖像識別,其包含兩大關鍵技術:文本檢測和文字識別。
  • 輕鬆識別文字,這款 Python OCR 庫支持超過 80 種語言
    有一款軟體叫掃描全能王,想必一些小夥伴聽過,這是一個OCR集成軟體,可以將圖像內容掃描成文字。所以說,OCR作用是對文本資料的圖像文件進行分析識別處理,獲取文字及版面信息。OCR本質是圖像識別,其包含兩大關鍵技術:文本檢測和文字識別。先將圖像中的特徵的提取並檢測目標區域,之後對目標區域的的字符進行分割和分類。
  • ocr識別文字的方法,有什麼文字識別軟體推薦?
    ocr識別文字的方法有什麼?朋友小葵可以說是一枚文藝女青年了,平時就愛看看書、旅旅遊,還有彈彈吉他。對了,有時候她還會做下兼職投稿,給雜誌社寫寫文章。此外,小葵還有個興趣愛好是摘抄、記錄入心字句,做寫作素材。
  • 【收藏】圖片轉成文字的方法總結,python批量圖片轉文字信息參考源碼
    方法三:應用Python寫圖片識別文字工具(騷操作,僅供裝比使用)騷操作來了,我們可以應用python來自己寫一個工具腳本,一個圖片識別文字工具腳本,可以批量操作,解放雙手,當然僅供裝比使用、數字、字母和標點符號的效果還是不錯的,如果是經過處理的圖片,比如驗證碼等圖片的識別,需要藉助jTessBoxEditor訓練字庫才能提高識別的準確率哦!
  • Python程序圖片和pdf上文字識別實例一二
    實例一:先減少背景雜音,再做圖片文字識別 為了提高識別率,先用opencv-python對掃描的圖片做預處理(減少背景雜音),然後調用pytesseract
  • 通過Python寫一個OCR圖片識別小程序
    在我們的日常辦公中,經常有識別圖片中的大段文字的需求。
  • 手把手教你用PaddleOCR與PyQT實現多語言文字識別的程序
    他了解到這屬於OCR文字識別技術,OCR實現了對圖片中的文字進行提取、識別。根據作者的介紹小張了解到,整個OCR文字識別算法主要包括兩部分:文字檢測算法,文字識別算法。不過也有一些end to end的OCR算法。一般來說訓練一個文字檢測的數據量和訓練識別的數據量是不一樣的,文字識別需要更多的數據,所以端到端的文字算法需要更多的數據量,目前先檢測後識別還是主流方法。
  • 什麼軟體可以識別圖片上的文字?並且識別圖片上的文字比較快?
    什麼軟體可以識別圖片上的文字?作為一枚文字編輯,朋友小張常常從生活中尋找寫作靈感。有時候,看到圖片上有合適文案的話,她都會把其中文字給抄錄下來保存到電腦上。但久而久之,小張發現這樣摘抄圖文字的方法效率太低,一字一句地敲打鍵盤實在是太慢了。
  • Python程序識別圖片和PDF上的文字(1)
    接下來的帖子介紹一種識別PDF非英文文字的方法:先引進第三方模塊Wand把PDF文件轉成圖片,再引進第三方模塊PyOCR或Pytesseract把圖片上的文字識別出來。Wand、PyOCR或Pytesseract為python可以引入的第三方模塊,是外面的包裝,包裹的內核是圖片處理的軟體包Imagemagick和光學字符識別OCR(Optical Character Recognistion)軟體包,比如Tesseract。這個帖子介紹如何安裝Tesseract。字符識別OCR把圖片上的文字自動識別出來,轉換成我們能處理的字符串。
  • 教你一款圖片文字識別軟體,快速提取文字!
    圖文識別是一種可以使你轉換不同文檔的技術,比如將掃描紙質文檔,PDF文件或者數位相機拍攝的圖片轉換成可以編輯的文檔。
  • 圖片轉文字識別軟體推薦?快速識別文字軟體哪款好
    圖片轉文字識別軟體推薦?生活中,我們有太多的時候需要對圖片進行文字識別、轉換操作了。迅捷文字識別軟體是一款圖片轉文字、ocr拍照取字與翻譯軟體,通過它使用手機就可以實現拍圖識字、照片掃描等操作。下面,我們一起來看看這款快速識別文字軟體好用在哪幾個方面吧。
  • 離線版圖片文字識別ocr
    離線版圖片文字識別ocr,精準識別超過十萬種物體和場景,包含多項高精度的識圖能力並提供相應的API服務,充分滿足各類個人開發者和企業用戶的業務需求。圖片文字識別可應用到的場景有哪些?1、 內容及廣告推薦 對客戶瀏覽頁面中圖片進行分析,通過識別圖片中的信息,給客戶推薦相關內容,或是在頁面中展示相關廣告,提升廣告點擊量。
  • 方便實用又免費的OCR文字識別/pdf轉word方法匯總【文末有福利】
    在平常工作、學習和生活中,大家經常需要從紙質文件、圖片、PDF等介質上提取文字,如果內容較少的話,我們可以採用手工錄入的辦法,雖慢但能解決問題。如果內容較多,就比較麻煩了,人工錄入的話不僅效率低還耗費精力,錯誤率也比較高。這時候就需要OCR軟體登場了,OCR是什麼?簡單來說就是一種圖片文字識別的技術,可以幫我們提取圖片中的文字。
  • 介紹一個Python 包,幾行代碼可實現 OCR 文本識別!
    文字 OCR 識別技術現在已經相當成熟了,無論 其 準確度還是識別速度 都能夠滿足我們的日常需要;今天給大家介紹一個 Python 包,該包的主要功能就是用於 OCR 識別的,包的名字叫 Pyteeseract,藉助這個包幾行代碼就能快速識別一張文本圖片Pytesseract 包是由 開源工具
  • 在線ocr圖片文字識別工具,將圖片識別成文字的方法
    如果不是今天真遇上一個朋友這麼操作,北北還真不敢相信,原來時到今日,還有人會用最原始最簡單粗暴的方式來提取圖片中的文字信息,沒錯,這裡所說的原始粗暴方式,就是手動碼字!實際上,想要提取圖片中的文字信息,最好的方法便是使用在線ocr圖片文字識別,至於怎麼用,具體要怎麼操作,下面,北北就來詳細的為大家分享一下操作的流程吧!
  • 想將圖片內容轉換為文字?你需要這些工具
    大家是否也遇到過以下難題:工作或者科研學習中,要應對大量的紙質文件、書刊雜誌、PDF格式的電子資料,很難對這些格式的資料進行編輯和整理讀書時,看到不錯的文章段落想要做書摘筆記,但又懶得去打字或是手抄整理在微信、微博等內容平臺看到有價值的圖片內容會隨手保存mark,或是用截屏把手機頁面內容保存到相冊,但這些圖片信息散亂在手機各處,很難進行歸納、
  • python爬蟲實戰-爬取微信公眾號所有歷史文章 - (03) python結合tesseract-ocr做圖文識別
    前面我們講到了adb的封裝,裡面具體講到到了在一副圖片中尋找目標的坐標並點擊。這篇文章我們講講對一副圖片的特定區域做截取,並利用開源庫做圖紋識別。要實現這個步驟的原因是,最初想實現爬取微信公眾號歷史文章這個功能時,一番沒有抓包爬蟲經驗,於是為了獲取歷史文章的標題用於pdf列印時的命名,一番想到截圖後對圖片做圖文識別,然後點擊文章標題,進入到文章閱讀界面然後結合目標圖片識別「複製連結」來獲取到文章的連結。
  • OCR之四:預處理工具與crnn文字識別
    圖片處理比較慢。本人根據需求用opencv重新了寫了下,速度提升10倍不止。要是用了umat可能會更快!要代碼的留言 最近會發到github上說到工具,在給大家介紹一個做OCR必須要知道wiki:傳送門:https://github.com/wanghaisheng/awesome-ocr/wiki37個pages希望可以幫到你!
  • 2020年好用的OCR文字識別軟體推薦
    ,大部分人可能會手工錄入,但是有時候會有大量的內容需要轉換,再一個個輸入就不太合適了,耗費的時間長不說,還容易出錯,這時候最好使用一些專業的OCR軟體,幫助你快速把圖片或文檔轉換為文字,本文中就推薦幾款好用的OCR文字識別軟體ABBY FineReaderABBY FineReader 是一款付費的專業級的PDF處理和OCR識別軟體,它使用基於AI
  • 從手機到電腦,究竟哪款OCR圖片文字識別軟體最好用?
    OCR (Optical Character Recognition,光學字符識別)是指電子設備檢查紙上列印的字符,通過檢測暗、亮的模式確定其形狀,然後用字符識別方法將形狀翻譯成計算機文字的過程。說白了就是識別圖片上的文字,然後提取出來,變成可編輯的文檔