2016-10-25 4 views
3

이미지에서 데이터를 읽는 간단한 스크립트를 작성하기 시작했습니다.Tesseract가 특정 숫자를 읽지 않습니다.

require 'rtesseract' 
require 'mini_magick' 

RTesseract.configure do |config| 
    config.processor = "mini_magick" 
end 

image = RTesseract.new("myImage.jpg") 
puts image.to_s 

나는이 이미지 진형 : 132B 4 : 돌아 왔어요했다

enter image description here

결과 여기를 읽어 RTesseract를 사용하여 내 루비 코드입니다.

저는 0이 B로 돌아 왔음을 이해합니다 (나는 그것을 풀 수 있습니다). 다만, 아래와 같이 3, 0, 8은 전혀 돌아 오지 않았습니다. 이제 저는 그것이 3과 0을 읽는 방법을 이미 알고 있다는 것을 알고 있습니다, 왜냐하면 그것은 첫 번째 숫자에서 그것을했기 때문입니다. 다음과 같은 번호를 렌더링하는 데 문제가 있다는 것을 알았으므로 흑백으로 만들었습니다. 132B 4 : 결과는 여전히 거슬러 온 그러나

enter image description here

:

이 내가 시도 두 번째 이미지입니다.

마지막으로 이미지를 자르고 마지막 3 개의 숫자 만 시도했습니다. 여기

는 이미지 :

enter image description here

하지만 스크립트를 실행했을 때, 그것은 어떤 결과를 반환하지 않습니다. 왜 내가 최종 숫자를 읽을 수 없는지에 대한 생각은 없습니까?

저는 Ruby 2.2.2, rTesseract 2.1.0 및 MiniMagick 4.5.1을 사용하고 있습니다. 내가

+0

이미지를 흰색으로 검은 색 텍스트로 바꾸고 이미지 압축 아티팩트를 제거합니다. @ eric-duminil의 제안입니다. 일관되고 알려진 글꼴의 경우, 필자 혼자만의 순진한 픽셀 - 픽셀 일치를 정확하게 처리했습니다. – Kache

+0

@Kache : 재미있는 것 같습니다. 링크가 있습니까? –

+0

@EricDuminil 아, 링크가 없습니다. 그것은 매우 순진한 방법이었습니다 : 1. 표준화 된 블랙 - 온 - 화이트 문자로 텍스트를 수정하고 자르십시오 2. 글꼴을 위해 나타날 수있는 가능한 모든 문자 이미지와 변이를 datamine 3. 픽셀 - 픽셀 차이가 가장 적은 문자를 선택하십시오 , 모든 문자 (예 : 문자 픽셀 높이/너비, 검은 색/흰색 픽셀 수 등)의 모든 픽셀을 계산할 필요가없는 몇 가지 트릭 사용 – Kache

답변

2

정팔 포체 3.04.01을 사용하고

나는 정팔 포체 3.03 , 루비 2.1.5 및 MiniMagick 4.5.1

는 또한 132B 4를 반환과 함께, 내 리눅스 민트 17 시스템에서 스크립트를 테스트했다.

당신이 자리 인코딩되어 있는지 확인해서, 당신은 시도 할 수 :

image = RTesseract.new("myImage.jpg", options: :digits) 

13223 4를 반환합니다.

매개 변수없이 tesseract를 시작하면 가능한 옵션 목록이 표시됩니다. "pagesegmode 7"재밌 : 그래서 7 = Treat the image as a single text line.

:

image = RTesseract.new("myImage.jpg", options: :digits, psm: 7) 

13223 4 3 21 8를 반환합니다.

두 번째 이미지에서는 3 21 8을 반환합니다.

저는 이제 가장 큰 문제는 JPG 유물이 꽤 강하고 대비가 숫자와 배경 사이에서 상대적으로 낮다는 것입니다. PNG 이미지를 사용하면 더 나은 결과를 얻을 수 있습니다.

김프

, I는 200 픽셀 높이로 화상을 조정할 어떤 아티팩트를 제거 자릿수 가까이 자른 150 색상/임계 값을 사용하여 이미지를 반전 PNG로 저장 :

enter image description here

Rtesseract 반환 :

convert myImage.jpg -geometry x200 -threshold 13% -negate myImage.png 
: 이미지 마법 (magick)와

1320 4 3 0 8 

,이 명령은 동일한 결과를 달성

+0

지침에 따라 거의 효과가있었습니다. 나는 132를 얻고있다. 4 3 8. 그래도 여전히 0에 문제가있는 것으로 보인다. 왜 그런 일이 일어날 지에 대한 생각은 없습니까? –

+0

(주의 : 첫 번째 0에는 "."을 넣고 두 번째에는 "."을 넣습니다.) –

+0

Tesseract를 업데이트 할 수 있습니까, 아니면 임계 값으로 재생할 수 있습니까? –

관련 문제