2011-07-01 9 views
11

이미지를 입력으로 사용하고 텍스트를 출력하는 프로그램을 만들고 싶습니다. 이제 신경망을 사용하여 단일 문자의 이미지를 그 문자로 바꿀 수 있다는 것을 알고 있습니다. 어려운 부분은 텍스트가있는 이미지가 주어지면 각 개별 문자 주위에 모든 사각형을 어떻게 생성 할 수 있습니까?OCR 프로그램은 어떻게 작성합니까?

그래서 어떤 종류의 방법이이 용도로 사용되며 누구에게 어떻게 수행 할지를 논의하는 연구 논문을 알고 있습니까?

http://en.wikipedia.org/wiki/Optical_character_recognition

참조 구글 정팔 포체에게

http://code.google.com/p/tesseract-ocr/

편집을 : 당신은 OCR 대해 얘기처럼 감사하는 것은

답변

8

기본적인 접근 방법은 검정색 픽셀의 히스토그램을 만드는 것입니다. 첫째, 모든 픽셀을 한 줄에 투영합니다. 히스토그램의 깊은 계곡은 선들 사이의 간격을 나타냅니다 (용지가 기울어 질 수 있다면 다른 각도로 시도하십시오). 그런 다음, 라인 당 (또는 폰트가 모노 스페이스 인 경우 페이지 당) 수평 히스토그램에 픽셀을 투영합니다. 이것은 당신에게 문자 간 공간에 대한 강한 표시를 줄 것입니다. 최소한 이것은 다음 단계에서 도움이 될 평균 문자 높이 및 너비 값을 제공합니다.

그 후 커닝 (문자가 겹치는 부분)을 처리해야합니다. 스캔 된 아티팩트를 보상하기 위해 이미지에 확장 또는 침식을 먼저하여 연결된 픽셀을 찾습니다.

스캔 이미지의 품질에 따라 고급 기술을 사용해야 할 수도 있지만 이것이 도움이 될 것입니다.

+0

이것은 매우 흥미 롭습니다. 당신이 묘사하는 방법이 때로는 꽤 잘 작동한다고 생각하지만, 배울 수 없기 때문입니다. 신경 네트워크는 개별 기호를 읽는 데 더 익숙해 지도록 훈련 될 수 있지만 일단 완벽 해지고 아이디어를 사용하면 절차의이 부분에 의해 제한 될 수 있습니다. 그것이 사실이라고 생각합니까, 오판합니까? – quanta

+0

아, 나는 약간 질문을 잘못 읽었습니다. 전통적인 접근 방식은 1) 이미지 향상 2) 세분화 3) 문자 인식 (NN 사용) 4) 컨텍스트 정보 (사전 조회 또는 통계 데이터 적용)를 사용하는 것입니다. 기본적으로 NN을 사용하여 세분화를 수행하거나 NN을 사용하여 2)와 3)을 결합 할 수 있습니다. 후자는 도전적이지만 잠재적 인 이점이 있습니다. 세분화에 NN을 적용하려면 좋은 기능이 필요합니다. 히스토그램 밸리를 사용하면 그 중 하나 일 수 있습니다 (나는 이것을 실제로하지 않았으므로 결과를 예측할 수 없습니다). – Emile

+0

축하합니다! 당신은 거의 Hough 변환을 재창조했습니다. –

2

이 인공 지능 같은 소리하지 않습니다, 그것은 소리 수정되지 않은 질문은 인공 지능에 대해 묻고있었습니다.

+1

@quanta AI와 OCR은 같은 것이 아닙니다. 그것을 AI라고 부름으로써, 당신은 잘못된 것을 묘사하고 있습니다. – Raoul

관련 문제