2014-12-21 7 views
8

소비자 카메라 (휴대 전화 포함)로 찍은 이미지에서 감각적 인 단어를 형성하지 않는 영숫자 (a-z0-9)를 추출하려고합니다. 문자는 크기와 글꼴 유형이 같으며 형식이 지정되지 않습니다. 실제 처리는 Windows에서 수행됩니다. Tesseract 감지 품질 향상

  • 노이즈를
  • 을 제거 cv::medianBlur 적용 회색으로 RGB로 변환

    • : Original image

      시각 처리 후의 I는 OpenCV의 함께 다음 적용

      다음 이미지 미가공 입력을 나타낸다 적응 형 임계 값을 사용하여 이미지를 2 진수로 변환 cv::adaptiveThreshold

    • 격자의 행과 열 수를 알고 있습니다. 따라서이 정보를 사용하여 각 그리드 셀을 간단히 추출합니다. 이들에 유사 나는 이미지를 얻을 모든 단계 후

    : 최신 교육 자료와

    enter image description here

    enter image description here

    enter image description here

    가 그럼 난 정팔 포체를 실행 (최신 SVN 버전) 개별 추출 된 셀 이미지 (개별적으로 시도했습니다. -psm-l 값) : 정팔 포체에 의해 생산

    tesseract.exe -l eng -psm 11 sample.png outtext 
    

    결과는 매우 좋지 않다 :

    • 대부분의 문자가 인식되지 않습니다.
    • 그리드 선은 때때로 "l"또는 "i"문자로 해석됩니다.

    난 이미 (침식 팽창, 개폐) 형태 학적 작업을 실험하고 오츠 임계 값 (THRESH_OTSU)와 적응 형 임계 값을 대체하지만 결과는 악화됐다.

    인식 품질을 향상시키기 위해 내가 시도 할 수있는 다른 방법은 무엇입니까? 또는 tesseract (예 : 템플릿 일치)를 사용하는 것 외에 문자를 추출하는 더 나은 방법이 있습니까?

    편집 (21-12-2014) : 간단한 템플릿 매칭 (정규화 된 상호 상관 및 LMS를 사용했지만 더 나쁜 결과를 사용)을 테스트했습니다. 그러나 나는 각 문자를 findCountours을 사용하여 추출한 다음 한 문자 만 사용하여 tesseract를 실행하고 각 입력 이미지를 단일 문자로 해석하는 -psm 10 옵션을 사용하여 큰 발전을 이루었습니다. Additonaly 후 처리 단계에서 영숫자가 아닌 문자를 제거합니다. 첫 번째 결과는 탐지율이 90 % 이상인 것이 좋습니다. 주요 문제는 "9"및 "g"및 "q"문자의 오 탐지입니다.

    감사합니다,

  • 답변

    1

    내가 here을 말하는 것처럼, 당신은 "거의 동일한"문자에주의를 기울여야 정팔 포체 알 수 있습니다. 또한 tesseract에는 사용자의 예제에서 도움이되지 않는 옵션이 있습니다. 예를 들어, "Pocahonta5S"는 숫자가 문자 단어이기 때문에 대부분 "PocahontaSS"가됩니다. 이런 식으로 볼 수 있습니다.

    사전 처리와 관련하여 샤프닝 필터를 사용하는 것이 좋습니다. tesseract는 항상 독서하기 전에 오츠의 필터를 적용한다는 것을 잊지 마십시오. 좋은 결과를 얻으려면 다른 필터와 함께 + 적응 임계 값을 선명하게하는 것이 좋습니다.

    1

    tesseract와 함께 OpenCV를 사용하는 것이 좋습니다.

    tesseract에 대한 입력 이미지의 문제점은 이미지의 비 문자 영역입니다.

    자신이

    나는 바이너리 이미지의 모든 윤곽을 수신하기 위해 OpenCV의 findContour 기능을 사용하는 것이 이러한 제거하기 위해 접근. 이후에 비 문자 영역을 구분하기위한 몇 가지 기준을 정의하십시오. 예를 들어, 이미지 내부에 있고 테두리에 닿지 않는 영역 만 가져 오거나 특정 영역 - 영역 또는 너비와 폭의 특정 비율을 갖는 영역 만 가져옵니다. 문자와 문자가 아닌 윤곽을 구별 할 수있는 몇 가지 종류의 기능을 찾습니다. 그런 다음 이러한 비 문자 영역을 제거하고 이미지를 tesseract 앞으로 처리합니다.

    그냥 생각이 일반적인 테스트를 위해이 방법으로 :

    비 문자 영역 수동 (김프 또는 페인트, ...)를 제거하고 정팔 포체에 이미지를 제공합니다. 결과가 당신의 expactations에 맞는다면 위의 제안 된 방법으로 비 문자 영역을 제거하려고 할 수 있습니다.