본문 바로가기
다양한 TIP

글자 추출 프로그램 예제(Tesseract OCR, c++)

by 유기농프로그래밍 2024. 2. 19.
반응형

Tesseract OCR을 이용한 글자 추출 프로그램

오픈소스인 tesseract ocr을 이용하여 png 파일에 있는 문자열을 추출하는 걸 해보겠습니다.

환경설정 - 설치

tesseract-ocr 설치

tesseract-ocr 설치방법입니다.

sudo apt install tesseract-ocr

libtesseract-dev 설치

libtesseract dev 설치방법입니다.

sudo apt install libtesseract-dev

tesseract-ocr-kor 설치

한글팩을 추가로 설치합니다.

sudo apt install tesseract-ocr-kor

예제코드

이 예제코드는 example.png 파일을 추출하여 글자를 출력하는 형태입니다.
api->Init(NULL, "kor") 부분에서 kor 대신 eng를 사용하면 영어로 추출
합니다.

 

#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>

int main()
{
    char *outText;

    tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
    // Tesseract-OCR 엔진을 초기화합니다. 여기서 "eng"는 영어, "kor"는 한글을 의미합니다. 다른 언어를 사용하려면 해당 언어 코드를 사용하세요.
    if (api->Init(NULL, "kor"))
    {
        fprintf(stderr, "Could not initialize tesseract.\n");
        exit(1);
    }

    // 이미지 파일로부터 텍스트를 추출합니다. 'example.png'를 실제 이미지 파일 경로로 변경하세요.
    Pix *image = pixRead("example.png");
    api->SetImage(image);
    // 추출된 텍스트를 얻습니다.
    outText = api->GetUTF8Text();
    printf("OCR output:\n%s", outText);

    // 메모리 해제
    api->End();
    delete [] outText;
    pixDestroy(&image);

    return 0;
}

컴파일 방법

g++ main.cpp -o main `pkg-config --cflags --libs tesseract lept`

 

main이라는 실행파일이 생깁니다.

./main 으로 실행하면 됩니다.

 

예제 example.png로 아래 이미지를 넣었습니다.

(옛날에 블로그에 썼던 이미지...하하)

 

결과는..!?

root@master:~/ocr# ./main
OCR output:
2023년 상반기
너티 그
고신 포가
그

20          /

 

제대로 나오는 글자도 있지만 대부분 이상한 값이 나왔네요.

 

좀 더 추출할 때 옵션이나 테스트를 해봐야겠습니다.

반응형

'다양한 TIP' 카테고리의 다른 글

curl 사용법 소개(옵션 설명)  (0) 2024.02.20
git config 이름 이메일 확인 및 설정방법  (0) 2024.02.16
git branch 삭제 안됨  (0) 2024.02.14

댓글