2014-11-20 39 views
3

我正在開發一個OCR來檢測信用卡。OCR匹配框架的位置信用卡領域

掃描完圖像後,我得到一個帶有位置的單詞列表。 關於檢測哪些單詞對應於信用卡的每個字段(數字,日期,姓名)的最佳方法的任何提示/建議?

例如:

position = 96.00 491.00 
    text = CARDHOLDER 

enter image description here

在此先感謝

+0

據我所知,某些字段(卡號,卡片名稱,開始/到期日期)的位置是標準化的(不是100%確定的,如果錯誤請更正)。所以這是一種情況,專家分割算法將啓發式分解成特定區域的圖像確實可以幫助您。大多數OCR(例如Tesseract)都針對連續文本頁面進行了優化,或者對多列文本進行了優化(有時他們還會與列進行拼寫)。在這些情況下,您需要了解如何覆蓋或提示使用的分頁算法,或者編寫你自己的預處理來完成。 – Mikesname 2014-11-20 18:23:38

回答

3

你的第一個問題是,大多數同時進行文本識別是不是少量的文本是佔用最優化的的「頁」 (或卡片圖像,在你的情況)在空間上分開的塊。他們希望掃描書籍或報紙上的線條或文本頁面。所以馬上他們不太可能在分析圖像時做那麼好

由於字體相當統一,他們可能會很好地識別字符,但佈局會混淆頁面分割算法,因此您得到的文本可能不會按正確順序排列。例如,卡號的「1234」和其下方的較小的「1234」構成一列文本,同樣是第二組四個數字和到期日期。

對於您事先知道佈局的特殊情況,您確實需要開發自己的頁面分割算法以將圖像分解爲區域,例如,卡號,持卡人姓名,開始日期和到期日期。這也不應該是很難,因爲我認爲這些組件的位置在信用卡上是標準化的。假設有良好的預處理和二值化,你可以基本上做一個水平直方圖,並在低谷處分割圖像。

然後提取每個區域作爲單獨的圖像,包含只是一行文本並將其提供給OCR。

交替(快速和骯髒的方法)

  • 責成OCR要認識到什麼由單列(即防止它試圖找出頁面佈局本身) 。您可以使用Tesseract使用-psm(頁面分段模式)參數設置爲(可能爲6)來完成此操作(但請嘗試查看最佳結果是什麼)
  • 使Tesseract輸出hOCR格式,您可以在configfile中設置此格式。 hOCR格式包括相對於整個圖像得到輸出的線的邊界框。
  • 寫的邊框在HOCR比較,你知道各家牌分量應該是的算法(尋找重疊的一定比例,也不會完全匹配出於顯而易見的原因。)
0

除了由Mikesname提供的良好技巧外,如果使用圖像處理將圖像轉換爲雙色(純黑白),則無論使用哪種OCR引擎,都可以大大提高識別效果,例如附加的圖像副本。Image converted to black and white

+1

你能提供/解釋你使用的是什麼類型的過濾器?只是一個二進制filtre?我只是一個門檻,但有最壞的結果 – DaSilva 2014-11-20 23:45:54

+0

嗯...我來自未來告訴你,該過濾器是一個自適應閾值... haha​​haha – Suaro 2018-01-22 13:03:18