OCR(광학 문자 인식) 기술을 사용하면 이미지 또는 스캔한 문서의 텍스트를 읽고 기계가 읽을 수 있는 형식으로 변환할 수 있습니다. OCR에는 바우처에서 코드 읽기, 텍스트를 편집 가능하게 만들기, 셀프 서비스 저장소, 인쇄된 문서를 디지털 형식으로 변환하는 등 다양한 사용 사례가 있습니다. 다양한 OCR 도구와 라이브러리가 시중에 나와 있지만 OCR 결과의 신뢰성이 핵심 요소입니다. 이 기사에서는 C++를 사용하여 프로그래밍 방식으로 OCR 응용 프로그램을 만들고 이미지를 텍스트로 변환하는 방법을 보여 드리겠습니다.
- 이미지를 텍스트로 변환하는 C++ OCR 라이브러리
- C++를 사용하여 이미지 페이지를 텍스트로 변환
- C++를 사용하여 단일 행이 있는 이미지에 대해 OCR 수행
- C++에서 이미지의 특정 영역을 텍스트로 변환
이미지를 텍스트로 변환하는 C++ OCR 라이브러리
Aspose는 딥 러닝을 사용하여 보다 안정적이고 정확한 OCR 결과를 제공하는 강력한 C++ OCR 라이브러리를 제공합니다. GitHub에서 샘플 프로젝트와 라이브러리 파일을 다운로드할 수 있습니다.
C++를 사용하여 이미지 페이지를 텍스트로 변환
먼저 이미지에 여러 줄 텍스트가 포함된 시나리오를 확인해 보겠습니다. 이것은 책의 각 페이지에 많은 텍스트 줄이 포함된 스캔한 책이 있는 경우일 수 있습니다. 이 경우 이미지를 텍스트로 변환하는 단계는 다음과 같습니다.
- 문자열 변수에 이미지의 경로를 설정합니다.
- OCR 결과를 저장할 버퍼를 준비합니다.
- aspose::ocr::page(const char \imagepath, wchart \buffer, sizet buffersize) 함수를 사용하여 OCR을 수행합니다.
- 결과를 인쇄하거나 파일에 저장합니다.
다음 코드 샘플은 C++를 사용하여 OCR을 수행하고 이미지를 텍스트로 변환하는 방법을 보여줍니다.
std::string image_path = "sample.png";
// 결과에 대한 버퍼 준비(기호에서, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };
// OCR 수행
size_t size = aspose::ocr::page(image_path.c_str(), buffer, len);
//결과 인쇄
std::wcout << buffer << L"\n";
C++를 사용하여 단일 행이 있는 이미지에 대해 OCR 수행
이전 예에서는 여러 텍스트 줄이 있는 이미지를 변환했습니다. 그러나 이미지에 캡션이나 슬로건과 같은 텍스트가 한 줄만 포함되는 경우가 있을 수 있습니다. 이러한 경우 OCR을 수행하는 단계는 다음과 같습니다.
- 문자열 변수를 사용하여 이미지의 경로를 설정합니다.
- OCR 결과를 저장할 버퍼를 만듭니다.
- aspose::ocr::line(const char \imagepath, wchart \buffer, sizet buffersize) 함수를 사용하여 OCR을 수행합니다.
- OCR 결과를 저장하거나 인쇄합니다.
다음 코드 샘플은 C++를 사용하여 한 줄의 텍스트가 있는 이미지에 대해 OCR을 수행하는 방법을 보여줍니다.
std::string image_path = "sample_line.jpg";
// 결과에 대한 버퍼 준비(기호에서, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };
// OCR 수행
size_t size = aspose::ocr::line(image_path.c_str(), buffer, len);
//결과 인쇄
std::wcout << buffer << L"\n";
C++에서 이미지의 특정 영역을 텍스트로 변환
API를 사용자 지정하여 OCR을 수행하려는 이미지 영역을 제한할 수도 있습니다. 이 경우 이미지에 사각형을 만들어 원하는 영역에 접근할 수 있습니다. 다음은 이미지의 특정 영역에서 텍스트를 추출하는 단계입니다.
- 문자열 변수에 이미지의 경로를 설정합니다.
- OCR 결과를 저장할 버퍼를 준비합니다.
- aspose::ocr::pagerect(const char \imagepath, wchart \buffer, sizet buffersize, int x, int y, int w, int h) 함수를 사용하여 OCR을 수행합니다.
- OCR 결과를 인쇄합니다.
다음 코드 샘플은 C++를 사용하여 이미지의 특정 영역을 텍스트로 변환하는 방법을 보여줍니다.
std::string image_path = "sample_line.jpg";
// 결과에 대한 버퍼 준비(기호에서, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };
int x = 138, y = 352, w = 2033, h = 537;
// OCR 또는 선택한 영역 수행
size_t size = aspose::ocr::page_rect(image_path.c_str(), buffer, len, x, y, w, h);
//결과 인쇄
std::wcout << buffer << L"\n";
결론
이 기사에서는 Aspose의 OCR 라이브러리를 사용하여 C++에서 이미지를 텍스트로 변환하는 방법을 배웠습니다. 한 줄 또는 여러 줄의 텍스트가 있는 이미지에서 OCR을 수행하는 방법과 이미지의 특정 영역에서 텍스트를 읽는 방법을 살펴보았습니다. 문서를 사용하여 C++용 Aspose.OCR에 대해 자세히 알아볼 수 있습니다.