2015-04-05 51 views
3

所以,我有如下形象:提示 - 沒有得到預期的效果

enter image description here

我試圖提取三個數組:

var a = [30,31,32,35,37,40,44]; 
var b = [6,7,11,15,18,21,22]; 
var c = [5,11,15,18,23,37,28]; 

我試着喂這個形象成tesseract ~/Desktop/test.png out無效:

9 % ooenesew @ 
5 ‘ 904399 

這就是結果m ocrad ~/Desktop/test.ppm

o 
? 
28 

任何OCR專家都可以建議我可能接下來要做什麼嗎?我很喜歡使用Python/OpenCV,但會嘗試任何事情。

+0

不是OCR專家,但是您是否知道您的身份?你總是會掃描那個圖像沒有歪斜,並在相同的規模?你知道每個可能的數字(我假設1-50左右)是什麼樣子?如果是這樣,您可以將這個問題從OCR中減少到功能匹配。 – Foon 2015-04-05 13:07:09

+0

嗨,它總是不偏斜,並在同一規模。數字範圍實際上是[1-45]。是的,我可能可以進行功能匹配。 – Eamorr 2015-04-05 13:11:18

+1

這似乎是一個相當不尋常的字體,而且你只是試圖匹配一組非常有限的字符。所以我認爲你需要先[Train Tesseract](https://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3)。 – 2015-04-05 13:16:55

回答

1

如果您的圖片總是與示例中的圖片相似,您可能需要進行一些整理以刪除不是數字的所有內容(所有黑色背景和圓圈)。然後,在接受的問題中所描述的方法可能足以滿足您的需求,因爲它看起來好像不是處理不同的字體和大小: Simple Digit Recognition OCR in OpenCV-Python

+0

我不知道如何可靠地移除黑色。有沒有辦法在OpenCV中進行模糊選擇?從0,0開始,模糊選擇所有黑色像素,並且如果總面積大於某個閾值,則刪除模糊區域。 – Eamorr 2015-04-05 13:25:00

+1

您可以使用findContours獲取連接的組件,然後通過過濾那些不符合特定條件的候選字符來分隔候選字符。在你的情況下,你可能會忽略輪廓的邊界框(boundingRect)的大小和/或長寬比,以決定是否要過濾它。鏈接的代碼已經採用類似的方法,並實現基於區域的基本形式的過濾(如果cv2.contourArea(cnt)> 50 :)和高度(如果h> 28 :)。 – ikkjo 2015-04-05 16:15:13