HOWTO · Csharp
C# 프로젝트에 OCR을 구현하는 방법
Tesseract 또는 IronOCR을 C# 프로젝트에 추가하고 이미지에서 텍스트를 인식하는 방법을 배웁니다.
이 페이지의 내용
C# 애플리케이션에서 이미지의 텍스트를 인식하려면 OCR 라이브러리를 설치하고, 이미지와 필요한 언어 데이터를 제공한 다음, 결과에서 인식된 텍스트를 읽으세요. 이 가이드는 오픈소스 Tesseract 엔진과 상용 IronOCR 라이브러리라는 두 가지 별도의 옵션을 설명합니다. 두 라이브러리는 패키지, 설정, API가 서로 다릅니다.
C# 애플리케이션에서 OCR이 하는 일
광학 문자 인식(OCR)은 이미지로 표현된 텍스트를 기계가 읽을 수 있는 텍스트로 변환합니다. C# 애플리케이션은 그 결과를 사용해 스캔한 페이지를 인덱싱하거나, 데이터 입력 양식을 미리 채우거나, 이미지 콘텐츠를 검색 가능하게 만들 수 있습니다. 인식 품질은 원본 이미지와 언어 구성에 따라 달라지며, 어떤 라이브러리도 모든 문자가 올바르게 식별된다고 보장할 수 없습니다.
Tesseract와 IronOCR 설치
프로젝트에 사용할 라이브러리 하나를 선택한 다음, 해당 라이브러리의 패키지 및 배포 요구 사항을 따르세요. Visual Studio에서 프로젝트의 NuGet 패키지 관리자를 열고, 독립형 Tesseract 경로에는 Tesseract라는 이름의 패키지를, IronOCR에는 IronOcr를 설치합니다. 추가하기 전에 Tesseract NuGet 목록 또는 IronOcr NuGet 목록에서 패키지 정체성과 버전을 확인하세요. 패키지 API와 네이티브 종속성은 버전과 대상 플랫폼에 따라 다를 수 있습니다.
Tesseract에는 학습된 언어 데이터도 필요합니다. 인식하려는 각 언어의 .traineddata 파일을 구해, 애플리케이션이 읽을 수 있는 tessdata 디렉터리에 파일을 함께 배치하세요. 이 디렉터리를 배포에 포함하고, 엔진을 만들 때 실제 경로를 사용하세요. Tesseract 프로젝트 문서에서는 .NET 래퍼와 그 설정을 설명합니다. IronOCR은 별도의 라이브러리입니다. 그 형식을 독립형 Tesseract 패키지에 전달하거나 두 패키지가 설정 단계를 공유한다고 가정하지 마세요. 배포 전에 선택한 IronOCR 버전의 공식 C# OCR 문서와 API 참조에서 패키지 지침, 라이선스 조건, 지원 플랫폼을 확인하세요.
Tesseract로 이미지에서 텍스트 인식하기
독립형 Tesseract 패키지에는 이미지와 학습 데이터 디렉터리가 모두 필요합니다. 이 완전한 프로그램은 tessdata에 eng.traineddata가 있는 상태에서 images/receipt.png에 있는 영어 이미지에 대한 의도된 흐름을 보여줍니다. 패키지 버전과 플랫폼별 네이티브 종속성은 검증용으로 제공되지 않았으므로, 이 코드를 검증되지 않은 예로 취급하고 컴파일하기 전에 대상에 맞는 Tesseract 프로젝트 문서에서 API와 종속성을 확인하세요.
using System;
using Tesseract;
internal static class Program
{
private static void Main()
{
const string imagePath = "images/receipt.png";
const string tessdataPath = "tessdata";
using (var engine = new TesseractEngine(tessdataPath, "eng", EngineMode.Default))
using (var image = Pix.LoadFromFile(imagePath))
using (var page = engine.Process(image))
{
Console.WriteLine(page.GetText());
}
}
}
예를 들어 이미지에 Invoice 1042라는 줄이 눈에 띄게 포함되어 있으면, 프로그램은 Invoice 1042와 같은 인식 텍스트를 출력합니다(뒤에 줄바꿈이 이어집니다). 이것은 대표적인 텍스트이지 관찰된 결과가 아닙니다. 실제 출력은 이미지와 인식 설정에 따라 달라집니다. tessdata 디렉터리를 배포된 애플리케이션과 함께 유지하고, imagePath와 언어 코드를 입력에 맞게 변경하세요.
IronOCR로 이미지에서 텍스트 인식하기
IronOCR은 고유한 IronOcr 네임스페이스와 API를 사용합니다. 다음 전체 프로그램은 IronTesseract, OcrInput.AddImage, Read를 사용해 같은 이미지를 인식하고 결과를 출력합니다. 패키지 버전은 검증용으로 제공되지 않았으므로, 이것은 검증되지 않은 예입니다. 컴파일하기 전에 IronOCR API 참조와 IronOcr 패키지 지침에서 정확한 서명과 종속성을 확인하세요.
using System;
using IronOcr;
internal static class Program
{
private static void Main()
{
const string imagePath = "images/receipt.png";
using (var ocr = new IronTesseract())
using (var input = new OcrInput())
{
input.AddImage(imagePath);
var result = ocr.Read(input);
Console.WriteLine(result.Text);
}
}
}
이미지에 Invoice 1042가 포함되어 있으면, 대표적으로 출력되는 텍스트는 Invoice 1042 뒤에 줄바꿈이 이어진 형태입니다. 이것은 예시이며 관찰된 실행이 아닙니다. 이러한 형식에는 IronOcr를 설치하고 참조하세요. IronTesseract는 IronOCR에 속하며 독립형 Tesseract 엔진이 아닙니다. result.Text가 반환하는 텍스트는 인식 출력이므로, 신뢰할 수 있는 애플리케이션 데이터로 사용하기 전에 검사하거나 검증하세요.
OCR 정확도 개선 및 오류 처리
텍스트에 충분한 대비가 있고 잘리지 않은, 선명하고 밝은 이미지로 시작하세요. 결과가 좋지 않으면 더 큰 원본 이미지를 시도하거나, 기울어진 페이지를 바로잡거나, 그레이스케일로 변환, 대비 조정, 노이즈 감소 등으로 사본을 전처리하세요. 전처리는 일부 입력에는 도움이 되고 다른 입력에는 해가 될 수 있으므로, 애플리케이션의 대표적인 이미지를 사용해 결과를 비교하세요.
올바른 언어를 구성하세요. 독립형 Tesseract에는 일치하는 학습 데이터가 설치되어 있어야 하고 적절한 언어 코드가 필요하며, IronOCR의 언어 설정은 선택한 버전에 따라 달라집니다. 여러 언어의 경우 기본값으로 충분하다고 가정하지 말고 의도한 언어 데이터를 구성하세요.
처리하기 전에 입력 파일이 존재하고 읽을 수 있는지 확인하고, 라이브러리 또는 파일 오류는 애플리케이션 경계에서 처리하세요. 민감한 이미지 내용을 노출하지 않으면서 유용한 컨텍스트를 기록하세요. OCR은 결과가 후속 의사 결정에 적합한지를 알리지 않은 채 부분적이거나 잘못된 텍스트를 반환할 수 있습니다. 중요한 필드를 검증하고 인식이 확실하지 않을 때의 검토 경로를 제공하세요. 두 라이브러리 예제 모두 제공된 런타임 증거에서는 실행되지 않았습니다.