C#에서 이미지의 특정 OCR 영역을 정의하는 방법

This article was translated from English: Does it need improvement?
Translated
View the article in English

C#에서 이미지의 특정 영역에서 텍스트를 추출하려면 IronOCR의 Rectangle 객체를 사용하여 y 좌표, widthheight을 지정하여 정확한 영역을 정의한 후, 해당 객체를 LoadImage 메서드에 전달하여 타겟팅된 OCR 처리를 수행합니다.

빠른 시작: 이미지의 특정 영역에서 텍스트 추출

  1. NuGet 패키지 관리자를 사용하여 https://www.nuget.org/packages/IronOcr 설치하기

    PM > Install-Package IronOcr
  2. 다음 코드 조각을 복사하여 실행하세요.

    using IronOcr;
    using IronSoftware.Drawing;
    
    // 1. Install IronOCR via NuGet: Install-Package IronOcr
    var ocr = new IronTesseract();
    using var input = new OcrInput();
    
    // 2. Create a Rectangle with coordinates
    var region = new Rectangle(x: 215, y: 1250, width: 1335, height: 280);
    
    // 3. Load image with region
    input.LoadImage("image.png", region);
    
    // 4. Extract text
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
  3. 실제 운영 환경에서 테스트할 수 있도록 배포하세요.

    무료 체험판으로 오늘 프로젝트에서 IronOCR 사용 시작하기

    arrow pointer

대부분의 경우, 송장의 총액이나 양식의 특정 필드처럼 이미지의 일부에서만 텍스트를 추출해야 할 때가 있습니다. 문서 전체를 스캔하는 것은 비효율적이며 관련 없는 텍스트까지 캡처하여 오류를 발생시킬 수 있습니다.

IronOCR을 사용하면 스캔할 정확한 직사각형 영역을 지정하여 정밀도, 성능 및 정확도를 향상시킬 수 있습니다. 이 가이드는 특정 OCR 영역을 정의하고, 해당 영역에서 텍스트를 추출하고, OCR 작업에 대한 좌표가 올바른지 시각적으로 확인하는 방법을 단계별로 안내합니다.

IronOCR 시작하기


특정 영역에 대해 OCR을 수행하려면 어떻게 해야 하나요?

특정 OCR 영역을 정의하려면 IronSoftware.Drawing 네임스페이스에서 Rectangle 객체를 생성합니다. 이 객체는 네 개의 값을 요구합니다: x-좌표, y-좌표, widthheight, 모두 픽셀 단위입니다. (x, y) 좌표는 원하는 영역의 왼쪽 상단 모서리를 나타냅니다.

LoadImage를 사용하여 이미지를 로드할 때 이 Rectangle을 두 번째 매개변수로 전달합니다. IronOCR은 해당 경계 상자 내의 픽셀에 대해서만 OCR 처리를 진행합니다.

지역 OCR은 송장 , 스캔한 양식 또는 신분증과 같이 특정 정보가 항상 예측 가능한 위치에 나타나는 구조화된 문서를 다룰 때 특히 유용합니다. OCR을 관련 영역으로만 제한하면 처리 속도를 크게 향상시키고 관련 없는 텍스트로 인한 오탐을 줄일 수 있습니다.

귀하의 Rectangle에 대한 좌표를 찾으려면 MS Paint와 같은 간단한 이미지 편집기를 사용할 수 있습니다. 입력 이미지를 열고 지정된 영역의 왼쪽 위와 오른쪽 아래 모서리에 마우스를 올려 놓고 (x, y) 픽셀 좌표를 기록합니다. 그러면 사각형의 속성을 계산할 수 있습니다: (x1, y1, width, height) 여기서 width = x1이고 height = y1입니다.

테스트에 어떤 이미지를 사용해야 할까요?

세 단락으로 구성된 샘플 이미지를 사용하겠습니다. 우리의 목표는 두 번째 단락만 추출하고 나머지 텍스트는 무시하는 것입니다. 이는 더 큰 문서에서 특정 필드 또는 섹션을 추출해야 하는 일반적인 시나리오를 보여줍니다.

터미널 창에 OCR 결과가 표시되고, 'Hello World' 헤더와 서점에 대한 추출된 텍스트가 나타납니다.

코드에서 지역별 OCR을 구현하는 방법은 무엇인가요?

구현은 OcrInput 객체를 생성하고 지정된 사각형 영역으로 이미지를 로드하는 것을 포함합니다. 이 방법은 JPG, PNG, GIF, TIFF, BMP를 포함한 다양한 이미지 형식에서 작동합니다.

:path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();

// Define the specific region as a Rectangle
// (x, y) is the top-left corner.
var ContentArea = new Rectangle(x: 215, y: 1250, width: 1335, height: 280);

ocrInput.LoadImage("region-input.png", ContentArea);

var ocrResult = ocrTesseract.Read(ocrInput);

// Print the extracted text
Console.WriteLine(ocrResult.Text);
$vbLabelText   $csharpLabel

더 복잡한 시나리오의 경우, 동일한 이미지 내에 여러 영역을 정의할 수 있습니다. 이는 문서에 여러 필드나 표가 있는 양식을 처리할 때 특히 유용합니다.

using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();
using var input = new OcrInput();

// Define multiple regions for different form fields
var nameField = new Rectangle(x: 100, y: 200, width: 300, height: 50);
var dateField = new Rectangle(x: 100, y: 300, width: 200, height: 50);
var amountField = new Rectangle(x: 400, y: 500, width: 150, height: 50);

// Load the same image multiple times with different regions
input.LoadImage("form.png", nameField);
var nameResult = ocr.Read(input);

input.Clear();
input.LoadImage("form.png", dateField);
var dateResult = ocr.Read(input);

input.Clear();
input.LoadImage("form.png", amountField);
var amountResult = ocr.Read(input);

// Process each field separately
Console.WriteLine($"Name: {nameResult.Text}");
Console.WriteLine($"Date: {dateResult.Text}");
Console.WriteLine($"Amount: {amountResult.Text}");
using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();
using var input = new OcrInput();

// Define multiple regions for different form fields
var nameField = new Rectangle(x: 100, y: 200, width: 300, height: 50);
var dateField = new Rectangle(x: 100, y: 300, width: 200, height: 50);
var amountField = new Rectangle(x: 400, y: 500, width: 150, height: 50);

// Load the same image multiple times with different regions
input.LoadImage("form.png", nameField);
var nameResult = ocr.Read(input);

input.Clear();
input.LoadImage("form.png", dateField);
var dateResult = ocr.Read(input);

input.Clear();
input.LoadImage("form.png", amountField);
var amountResult = ocr.Read(input);

// Process each field separately
Console.WriteLine($"Name: {nameResult.Text}");
Console.WriteLine($"Date: {dateResult.Text}");
Console.WriteLine($"Amount: {amountResult.Text}");
$vbLabelText   $csharpLabel

어떤 결과를 기대할 수 있을까요?

콘솔 출력에서 ​​볼 수 있듯이 두 번째 단락만 OCR로 처리되었습니다. 이러한 맞춤형 접근 방식은 이미지의 다른 부분에 있는 관련 없는 텍스트가 결과에 영향을 미치지 않도록 보장합니다.

OCR 출력

지역별 OCR의 정확도는 여러 요인에 따라 달라집니다.

  • 이미지 품질 : 일반적으로 해상도가 높은 이미지가 더 나은 결과를 제공합니다. 이미지 최적화를 위해 DPI 설정을 활용해 보세요.
  • 텍스트 방향 : 텍스트가 올바르게 정렬되었는지 확인하십시오. 필요한 경우 페이지 회전 감지 기능을 사용하세요.
  • 대비 및 선명도 : 이미지 보정 필터를 적용하여 텍스트 가독성을 향상시키세요.

내 좌표가 정확한지 어떻게 확인할 수 있나요?

입력 이미지에 대해 올바른 좌표를 선택했는지 확인하려면 정의한 ContentArea를 시각화할 수 있습니다. 이 작업을 수행하는 간단한 방법은 입력 이미지에 사각형을 그린 후 StampCropRectangleAndSaveAs로 새 파일로 저장하는 것입니다. 이를 통해 디버깅을 하고 최적의 성능을 위해 좌표를 미세 조정할 수 있습니다.

이 시각화 기법은 복잡한 레이아웃을 다룰 때나 품질 보증을 위해 특정 텍스트 영역을 강조 해야 할 때 특히 유용합니다.

다음은 위 예시 입력 이미지에 지정된 경계 상자를 그린 후의 출력 이미지입니다.

선택한 영역을 어떻게 시각화할 수 있나요?

:path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image-highlighted.cs
using IronOcr;
using IronSoftware.Drawing;

var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();

// Define the specific rectangular area to scan within the image.
// The coordinates are in pixels: (x, y) is the top-left corner of the rectangle.
var ContentArea = new Rectangle(x: 4, y: 59, width: 365, height: 26);

ocrInput.LoadImage("region-input.png", ContentArea);

var ocrResult = ocrTesseract.Read(ocrInput);

// Draws the rectangle from above in a blue bounding box on the image for visualization.
ocrInput.StampCropRectangleAndSaveAs(ContentArea, Color.Aqua, "region-input.png");
$vbLabelText   $csharpLabel

시각화 결과는 어떻게 나타나나요?

OCR 강조 표시 출력

연한 파란색 사각형은 두 번째 단락을 처리 대상으로 올바르게 분리했음을 확인시켜 줍니다.

지역 OCR은 언제 사용해야 할까요?

지역 OCR은 다음과 같은 여러 일반적인 시나리오에 적합합니다.

  1. 양식 처리 : 데이터가 일관된 위치에 나타나는 표준화된 양식에서 특정 필드를 추출할 때.
  2. 송장 처리 : 전체 문서를 처리하지 않고 합계, 날짜 또는 송장 번호와 같은 특정 값을 추출합니다.
  3. 차량 번호판 : 차량 번호판 인식을 사용할 때는 번호판 영역에만 집중하십시오.
  4. 신분증 : 여권 이나 신분증에서 특정 항목을 추출합니다.
  5. 스크린샷 : 스크린샷 에서 특정 UI 요소의 텍스트를 캡처할 때 사용합니다.

지역 OCR을 위한 모범 사례

지역 OCR을 통해 최적의 결과를 얻으려면:

  1. 여백 추가 : 텍스트 주변에 작은 여백을 추가하여 가장자리에서 문자가 잘리지 않도록 하세요.
  2. 샘플 이미지로 테스트 : 대량 처리를 하기 전에 항상 대표 샘플을 사용하여 좌표를 확인하십시오.
  3. 변형 처리 : 스캔한 문서의 미세한 위치 변화를 고려하여 영역을 필요 이상으로 약간 크게 설정하십시오.
  4. 성능 최적화 : 멀티스레드 처리를 위해 서로 다른 영역을 병렬로 처리합니다.
  5. 신뢰도 모니터링 : 결과의 신뢰도 점수를 확인하여 정확성을 확보하십시오.

OCR 처리를 특정 영역에 집중함으로써 텍스트 추출 작업의 속도와 정확도를 크게 향상시킬 수 있습니다. 이러한 목표 지향적인 접근 방식은 .NET 애플리케이션에서 효율적인 문서 처리 워크플로를 구축하는 데 필수적입니다.

자주 묻는 질문

C#에서 이미지의 특정 부분에서만 텍스트를 추출하는 방법은 무엇인가요?

IronOCR을 사용하면 x/y 좌표, 너비 및 높이 값을 가진 Rectangle 객체를 생성하여 특정 영역에서 텍스트를 추출할 수 있습니다. 이 Rectangle 객체를 LoadImage 메서드의 두 번째 매개변수로 전달하면 IronOCR은 정의된 영역으로 OCR 처리를 제한합니다.

이미지 전체를 스캔하는 대신 OCR 영역을 정의하는 것의 이점은 무엇입니까?

IronOCR에서 특정 OCR 영역을 정의하면 처리 속도를 향상시키고 정확도를 높이며 관련 없는 텍스트를 캡처하여 발생하는 오류를 줄일 수 있습니다. 이는 정보가 예측 가능한 위치에 나타나는 구조화된 문서에 특히 유용합니다.

지역 OCR용 사각형을 생성하려면 어떤 매개변수가 필요합니까?

IronOCR의 영역 OCR용 사각형을 생성하려면 x좌표, y좌표, 너비, 높이의 네 가지 픽셀 값이 필요합니다. (x, y) 좌표는 스캔하려는 영역의 왼쪽 상단 모서리를 나타냅니다.

OCR 영역에 대한 Rectangle 객체가 포함된 네임스페이스는 무엇입니까?

IronOCR에서 OCR 영역을 정의하는 데 사용되는 Rectangle 객체는 IronSoftware.Drawing 네임스페이스에 있습니다.

지역 OCR 처리를 통해 가장 큰 이점을 얻을 수 있는 문서 유형은 무엇입니까?

IronOCR의 지역별 OCR 기능은 송장, 스캔한 양식, 신분증과 같이 특정 정보가 항상 같은 위치에 나타나는 구조화된 문서에 특히 효과적입니다.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

시작할 준비 되셨나요?
Nuget 다운로드 5,525,971 | 버전: 2026.3 방금 출시되었습니다
Still Scrolling Icon

아직도 스크롤하고 계신가요?

빠른 증거를 원하시나요? PM > Install-Package IronOcr
샘플을 실행하세요 이미지가 검색 가능한 텍스트로 바뀌는 것을 확인해 보세요.