我正在開發一個OCR來檢測信用卡。OCR匹配框架的位置信用卡領域
掃描完圖像後,我得到一個帶有位置的單詞列表。 關於檢測哪些單詞對應於信用卡的每個字段(數字,日期,姓名)的最佳方法的任何提示/建議?
例如:
position = 96.00 491.00
text = CARDHOLDER
在此先感謝
我正在開發一個OCR來檢測信用卡。OCR匹配框架的位置信用卡領域
掃描完圖像後,我得到一個帶有位置的單詞列表。 關於檢測哪些單詞對應於信用卡的每個字段(數字,日期,姓名)的最佳方法的任何提示/建議?
例如:
position = 96.00 491.00
text = CARDHOLDER
在此先感謝
你的第一個問題是,大多數同時進行文本識別是不是少量的文本是佔用最優化的的「頁」 (或卡片圖像,在你的情況)在空間上分開的塊。他們希望掃描書籍或報紙上的線條或文本頁面。所以馬上他們不太可能在分析圖像時做那麼好。
由於字體相當統一,他們可能會很好地識別字符,但佈局會混淆頁面分割算法,因此您得到的文本可能不會按正確順序排列。例如,卡號的「1234」和其下方的較小的「1234」構成一列文本,同樣是第二組四個數字和到期日期。
對於您事先知道佈局的特殊情況,您確實需要開發自己的頁面分割算法以將圖像分解爲區域,例如,卡號,持卡人姓名,開始日期和到期日期。這也不應該是很難,因爲我認爲這些組件的位置在信用卡上是標準化的。假設有良好的預處理和二值化,你可以基本上做一個水平直方圖,並在低谷處分割圖像。
然後提取每個區域作爲單獨的圖像,包含只是一行文本並將其提供給OCR。
交替(快速和骯髒的方法)
-psm
(頁面分段模式)參數設置爲(可能爲6)來完成此操作(但請嘗試查看最佳結果是什麼)
據我所知,某些字段(卡號,卡片名稱,開始/到期日期)的位置是標準化的(不是100%確定的,如果錯誤請更正)。所以這是一種情況,專家分割算法將啓發式分解成特定區域的圖像確實可以幫助您。大多數OCR(例如Tesseract)都針對連續文本頁面進行了優化,或者對多列文本進行了優化(有時他們還會與列進行拼寫)。在這些情況下,您需要了解如何覆蓋或提示使用的分頁算法,或者編寫你自己的預處理來完成。 – Mikesname 2014-11-20 18:23:38