2017-02-11 17 views
3

기차 나 트럭과 같은 차량의 OCR을 통해 숫자와 문자를 식별하려고합니다. (이 번호는 OCR 번호판 확인이 아닙니다.)차량에 쓰여진 텍스트의 OCR을 개선하는 방법은 무엇입니까?

나는이 이미지를 찍었습니다. 아이디어는 BN SF 721 734 텍스트를 추출 할 수있게하는 것입니다. 사전 처리에 대한

enter image description here

, 내가 먼저 그레이 스케일 이미지를 변환 한 후 내가 정팔 포체 일부 코드를 작성이

enter image description here

같은 것을 보이는 이진화 된 이미지로 변환됩니다.

myimg = "image.png" 
image = Image.open(myimg) 
with PyTessBaseAPI() as api: 
    api.SetImage(image) 
    api.Recognize() 
    words = api.GetUTF8Text() 
    print words 
    print api.AllWordConfidences() 

이 코드

나에게 정팔 포체는 텍스트가 이미지에 존재하지 않는 것을 95 % 확신 것을 의미한다 (95)의 신뢰도 값이 빈 출력을했다.

그런 다음 Tesseract에서 setrectangle api를 사용하여 전체 이미지에서 OCR을 수행하는 대신 이미지 내의 특정 창에서 OCR을 제한했습니다.

myimg = "image.png" 
image = Image.open(myimg) 
with PyTessBaseAPI() as api: 
    api.SetImage(image) 
    api.SetRectangle(665,445,75,40) 
    api.Recognize() 
    words = api.GetUTF8Text() 
    print words 
    print api.AllWordConfidences() 
    print "----" 

는 665, 445, 75, 40은 이미지의 텍스트 BNSF 721 (734)을 포함하는 직사각형의 좌표에 대응. 665 - 위쪽, 445 - 왼쪽, 75 - 너비 및 40 - 높이.

an s 
m,m 

내 질문은 내가 결과를 어떻게 개선 할입니다 : 내가 가진

출력이이었다? setrectangle 함수의 값을 가지고 놀았지만 결과는 약간 씩 변했지만 모두 모두 똑같이 나빴습니다.

개선 할만한 방법이 있습니까? 당신은 내가 이미지를 진화하기 위해 이미지를 변환하는 방법에 관심이 있다면

, 나는 내가 자른 사각형의 윤곽을 발견하고 캐릭터의 윤곽에 맞게 일부 매개 변수를 설정하는 것이 좋습니다 OpenCV의

img = cv2.imread(image) 
grayscale_img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) 
(thresh, im_bw) = cv2.threshold(grayscale_img, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU) 
thresh = 127 
binarized_img = cv2.threshold(grayscale_img, thresh, 255, cv2.THRESH_BINARY)[1] 
+0

OpenCV를 사용하여 MSER 영역을 추출해보십시오. 이것을 Tesseract –

+0

@ JeruLuke에게 보내십시오 :이 옵션을 시도해보십시오. 나는 그들이 현재 어떻게 작동하는지 잘 모르기 때문에 MSER 지역에 관해 읽을 필요가있다. 내 질문은 그것이 OCR의 정확성을 향상시키는 데 도움이 될 것인가 아니면 텍스트 주위의 사각형을 자동으로 추출하는 데 도움이 될까요? 감사합니다 – Piyush

+0

스트로크 너비 변환을 사용하여 이미지의 텍스트 위치를 먼저 확인해보십시오. 텍스트를 찾기 위해 특별히 고안되었습니다. 일반적으로 너무 일찍 이진화하지 마십시오. – Rethunk

답변

0

을 사용했다. 예 : 면적이 크거나 작고 약간의 경계를 가진 등고선. 그런 다음 빈 비트 맵에 하나의 윤곽선을 그려 OCR을 수행하십시오.

많은 일처럼 보입니다. 그러나 더 나은 결과를 제공합니다. 행운을 빈다!