2014-03-24 3 views
9

tesseract ocr을 사용하여 이미지에서 텍스트를 추출합니다. 문서의 구조를 보존하는 것은 나에게 매우 중요합니다. 현재 tesseract는 구조체를 보존하지 않으며, 실제로 텍스트의 순서를 변경합니다. 내 입력은 아래 이미지입니다.tesseract에서 문서 구조를 보존하는 방법

input

다음과 같이 내가 무엇입니까 출력은 다음과 같습니다

Someto the left 
Someto the left 

Some in the middle 
Some in the middle 

Some with some tab 
Some with some tab 

Some with some space between them 
Some with some space between them 

Sometext here 
Sometext here 

this much 
this much 

을 어떻게 이미지에서 동일한 구조의로 원하는 출력을 얻을 수 있습니까?

즉 다음과 같이

            Some text here 
               Some text here 

Some to the left 
Some to the left 

        Some in the middle 
        Some in the middle 

     Some with some tab 
     Some with some tab 

Some with some space between them      this much 
Some with some space between them      this much 

답변

11

최신 버전의 tesseract (3.04)에는 preserve_interword_spaces이라는 옵션이 있습니다. 원하는 옵션을 선택해야합니다.

단어 사이에 발견되는 공백의 수는 유사한 줄 사이에서 항상 동일하지 않을 수도 있습니다. 따라서 앞의 공백과 같이 왼쪽으로 정렬 된 단어는이 방법으로 출력되지 않을 수 있습니다. preserve_interword_spaces 옵션은 공상을 해보려고하지 않고 단순히 공백 추출 만 보존합니다. 기본적으로 tesseract는 공백의 실행을 하나로 축소합니다.

이 옵션에 대한 자세한 내용은 here입니다.

+0

감사합니다 ... 작동합니다! 우분투 14.04에서는 여전히 컴파일에 어려움이 있습니다. –

+0

tess4j에서이를 노출하는 API가 있습니까? –

4

신뢰할 수있는 유일한 방법은 hOCR 출력을 활성화하고 구문 분석하는 것입니다. 원본 이미지와 마찬가지로 페이지의 각 단어의 위치가 픽셀 단위로 포함됩니다.

Tesseract의 설정 파일이나 사용하는 API에 tessedit_create_hocr 1을 지정하면됩니다.

hOCR은 HTML의 하위 집합이며 Tesseract가 생성하는 것은 항상 유효한 XML이 아니므로 HTML 파서를 사용하거나 직접 작성할 수는 있지만 XML 파서를 안정적으로 사용할 수는 없습니다.

관련 문제