푸터 콘텐츠로 바로가기
IRONOCR 사용

.NET OCR SDK: C#용 텍스트 인식 라이브러리

.NET OCR SDK는 C# 및 .NET 응용 프로그램이 이미지, 스캔된 PDF, 기타 문서 형식에서 프로그래밍 방식으로 텍스트를 추출하도록 하는 소프트웨어 개발 키트입니다. IronOCR는 조정된 Tesseract 5 엔진을 전처리 필터, 바코드 읽기, 검색 가능한 PDF 출력, 125개 이상의 언어 지원과 함께 .NET OCR SDK로 포장한 프로덕션 준비 완료 소프트웨어입니다. Windows, Linux, macOS, 클라우드 플랫폼에서 작동하는 깔끔한 C# API로 액세스 가능합니다.

IronOCR가 귀하의 프로젝트에 적합한 .NET OCR SDK인 이유는?

텍스트 인식을 처음부터 구축하려면 이미지 전처리 파이프라인, 언어 데이터 파일, 스레딩 모델, 출력 파싱을 관리해야 합니다. 첫 단어를 추출하기 전에 몇 달의 작업이 필요합니다. IronOCR는 팀이 몇 분 안에 프로젝트에 투입할 수 있는 전투 테스트된 엔진을 제공하여 그러한 부담을 없앱니다.

원초적인 Tesseract 바인딩과 구별되는 주요 기능:

  • 125개 이상의 언어와 스크립트를 포함한 필기 텍스트 인식
  • 내장된 필터: 노이즈 제거, 기울어짐 보정, 이진화, 해상도 향상, 대비 보정
  • 바코드 및 QR 코드 탐지, 동일한 읽기 패스 내에서
  • 보관 워크플로우를 위한 보이지 않는 텍스트 레이어가 포함된 검색 가능한 PDF 생성
  • 고처리량 파이프라인을 위한 비동기 및 병렬 배치 처리
  • 처리 시간을 줄이기 위한 특정 페이지 영역을 지정하는 영역 OCR
  • Windows, Linux, macOS, Docker, Azure에서의 크로스 플랫폼 지원

Tesseract OCR 프로젝트 문서에 따르면, 원래의 Tesseract는 언어 팩, DPI 설정, 출력 모드에 대해 수동 구성을 필요로 합니다. IronOCR는 모든 것을 자동 처리하여 추출된 텍스트가 무엇을 의미하는지에 초점을 맞출 수 있도록 합니다.

IronOCR는 원래 Tesseract와 어떻게 비교됩니까?

P/Invoke 래퍼나 Tesseract NuGet 패키지를 통한 Raw Tesseract는 tessdata 언어 파일을 다운로드 및 위치 지정, 올바른 페이지 분할 모드 선택, 다중 페이지 TIFF 및 PDF 분할 직접 처리, 병렬 처리를 원한다면 스레드 연결 등을 사용자가 책임져야 합니다. 이러한 세부 사항은 비즈니스 문제와는 무관합니다.

IronOCR는 모든 배관을 포장합니다. 타이핑된 API 표면, 자동 tessdata 관리, 내장된 PDF 분할 및 재결합, 요청 간 재사용할 수 있는 스레드 안전 엔진을 제공합니다. 타협안은 프로덕션 사용을 위한 유료 라이선스입니다 -- 라이선싱 페이지에서 무료 개발 라이선스를 포함한 현재 가격 계층을 확인할 수 있습니다.

오픈 소스 종속성만 필요한 팀에게는 원래 Tesseract와 사용자 정의 전처리가 유효한 경로입니다. 신뢰할 수 있는 OCR을 빠르게 배포해야 하는 팀들에게는 IronOCR가 C# 몇 줄로 통합 표면을 줄여줍니다.

IronOCR .NET SDK를 어떻게 설치합니까?

설치는 표준 .NET 패키지 관리자 NuGet을 통해 이루어집니다. 프로젝트 디렉토리에서 다음 명령어를 실행하세요.

Install-Package IronOcr

Visual Studio 사용자는 NuGet 패키지 관리자 GUI에서 IronOcr를 검색하여 설치하세요. 메뉴얼 DLL 참조를 포함한 전체 설치 옵션은 IronOCR 설치 문서를 참조하세요.

설치 후, 라이선스 키를 응용 프로그램 시작 시 또는 appsettings.json에 추가하세요. 모든 기능을 시험하는 동안 잠금 해제하는 시험 키를 받기 위해 무료 체험을 시작할 수 있습니다.

설치 확인

설치 후의 간단한 유효성 검사는 모든 것이 올바르게 연결되었는지 확인합니다. .NET 10을 대상으로 콘솔 응용 프로그램을 만드십시오:

using IronOcr;

// Minimal smoke test -- reads a single image and prints extracted text
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("sample.png");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;

// Minimal smoke test -- reads a single image and prints extracted text
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("sample.png");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

콘솔에 텍스트가 나타나면 SDK가 설치되었고 라이선스 키가 유효하다는 의미입니다. 프로덕션 워크플로우를 구축할 준비가 되었습니다.

이미지와 PDF에서 C#으로 텍스트를 어떻게 추출합니까?

핵심 추출 패턴은 모든 입력 유형에 대해 일관됩니다. IronTesseract 인스턴스를 생성하고, OcrInput 객체에 콘텐츠를 로드하고 Read()을 호출합니다. IronOCR는 파일 확장자로부터 형식을 자동 감지하므로 동일한 코드 경로가 JPEG, PNG, TIFF, BMP, 다중 페이지 PDF를 처리합니다.

using IronOcr;

// Reusable OCR service encapsulating the IronTesseract engine
public class OcrService
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public string ExtractText(string filePath)
    {
        using var input = new OcrInput();

        // LoadPdf for PDF files; LoadImage for raster formats
        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        return _ocr.Read(input).Text;
    }

    public async Task<string> ExtractTextAsync(string filePath)
    {
        using var input = new OcrInput();

        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        var result = await _ocr.ReadAsync(input);
        return result.Text;
    }
}
using IronOcr;

// Reusable OCR service encapsulating the IronTesseract engine
public class OcrService
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public string ExtractText(string filePath)
    {
        using var input = new OcrInput();

        // LoadPdf for PDF files; LoadImage for raster formats
        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        return _ocr.Read(input).Text;
    }

    public async Task<string> ExtractTextAsync(string filePath)
    {
        using var input = new OcrInput();

        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        var result = await _ocr.ReadAsync(input);
        return result.Text;
    }
}
$vbLabelText   $csharpLabel

서비스를 사용하는 최상위 진입점:

using IronOcr;

var service = new OcrService();
string text = await service.ExtractTextAsync("invoice.pdf");
Console.WriteLine(text);
using IronOcr;

var service = new OcrService();
string text = await service.ExtractTextAsync("invoice.pdf");
Console.WriteLine(text);
$vbLabelText   $csharpLabel

IronTesseract 인스턴스는 스레드 안전성을 가지며 재사용을 위해 설계되었습니다. 애플리케이션 시작 시 한 번 생성하십시오 (예: ASP.NET Core에서의 의존성 주입을 통해) 요청 당 인스턴스를 생성하는 대신.

다중 페이지 PDF의 경우 result.Pages는 페이지 별로 텍스트, 신뢰도 점수, 경계 상자에 대한 접근을 제공합니다. 페이지별 반복에 대한 자세한 내용은 다중 페이지 PDF OCR 가이드를 참조하십시오.

OCR 정확성을 향상시키기 위해 전처리 필터를 어떻게 사용할까요?

플랫베드 스캐너, 스마트폰 카메라, 팩스 기계에서의 원시 스캔은 자주 노이즈, 회전, 낮은 대조 및 불충분한 해상도 문제를 겪습니다. IronOCR의 이미지 품질 보정 파이프라인은 읽기 호출 전에 체인할 수 있는 목표 필터로 각 문제를 해결합니다.

using IronOcr;

public class AccuracyOptimizedOcr
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public string ProcessLowQualityDocument(string filePath)
    {
        using var input = new OcrInput();

        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        // Chain preprocessing filters in order of operation
        input.DeNoise();              // Remove scan artifacts and speckling
        input.Deskew();               // Correct page tilt up to 35 degrees
        input.Scale(150);             // Enlarge small text for better recognition
        input.Binarize();             // Convert to black/white for cleaner edges
        input.EnhanceResolution(300); // Sharpen blurry or low-DPI input

        var result = _ocr.Read(input);

        // Confidence below 70 often signals a preprocessing mismatch
        if (result.Confidence < 70)
            Console.WriteLine($"Warning: low confidence ({result.Confidence:F1}%)");

        return result.Text;
    }
}
using IronOcr;

public class AccuracyOptimizedOcr
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public string ProcessLowQualityDocument(string filePath)
    {
        using var input = new OcrInput();

        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        // Chain preprocessing filters in order of operation
        input.DeNoise();              // Remove scan artifacts and speckling
        input.Deskew();               // Correct page tilt up to 35 degrees
        input.Scale(150);             // Enlarge small text for better recognition
        input.Binarize();             // Convert to black/white for cleaner edges
        input.EnhanceResolution(300); // Sharpen blurry or low-DPI input

        var result = _ocr.Read(input);

        // Confidence below 70 often signals a preprocessing mismatch
        if (result.Confidence < 70)
            Console.WriteLine($"Warning: low confidence ({result.Confidence:F1}%)");

        return result.Text;
    }
}
$vbLabelText   $csharpLabel

필터 선택 안내:

  • DeNoise() -- 심한 점이 있거나 압축 아티팩트가 있는 스캔에 사용하세요
  • Deskew() -- 문서가 각도에서 촬영된 경우에 사용하세요; 자동 감지를 위한 페이지 회전 감지를 참조하십시오.
  • Scale() -- 작은 글씨나 150 DPI 이하 입력에 사용하세요; 150-200의 값이 대개 최상의 결과를 제공합니다.
  • Binarize() -- 컬러 또는 그라데이션 배경에 사용하세요; 이미지를 엄격한 흑백으로 변환합니다.
  • EnhanceResolution() -- 흐릿하거나 대비가 낮은 텍스트에 사용하세요; 300 DPI를 Tesseract의 적합점으로 목표로 합니다.

국제 문서 분석 및 인식 저널에 게재된 연구는 이진화와 디스큐가 문자 인식률을 개선하는 데 가장 높은 영향을 미치는 전처리 단계임을 일관되게 보여줍니다. 제작 파이프라인에서는 모두 기본값으로 적용합니다.

IronOCR 전처리 필터와 그 주요 사용 사례
필터 문제 해결 적용 시점
`DeNoise()` 스캐너 아티팩트, 얼룩 노이즈 모든 플랫베드 또는 팩스 스캔
`Deskew()` 페이지 기울기 및 회전 촬영되었거나 잘못 정렬된 문서
`Scale()` 작은 글자 또는 낮은 DPI 150 DPI 이하 입력
`Binarize()` 색상 배경, 그라데이션 색지나 워터마크 양식
`EnhanceResolution()` 블러 및 낮은 대조 카메라 캡처와 압축된 JPEG

생산 배치 처리 파이프라인을 어떻게 구축합니까?

단일 문서 추출은 간단하지만, 생산 시나리오는 대기열, 공유 폴더 또는 클라우드 저장소에 도착하는 수백 또는 수천 개의 파일을 포함합니다. IronOCR의 비동기 API와 스레드 안전 엔진은 병렬 작업에 적합합니다.

using IronOcr;
using Microsoft.Extensions.Logging;

public class ProductionOcrService
{
    private readonly IronTesseract _ocr;
    private readonly ILogger<ProductionOcrService> _logger;

    public ProductionOcrService(ILogger<ProductionOcrService> logger)
    {
        _logger = logger;
        _ocr = new IronTesseract
        {
            Configuration =
            {
                RenderSearchablePdfsAndHocr = true,
                ReadBarCodes = true
            }
        };
    }

    public async Task<IReadOnlyList<string>> ProcessBatchAsync(
        IEnumerable<string> filePaths,
        int maxDegreeOfParallelism = 4)
    {
        var results = new System.Collections.Concurrent.ConcurrentBag<string>();

        var options = new ParallelOptions
        {
            MaxDegreeOfParallelism = maxDegreeOfParallelism
        };

        await Parallel.ForEachAsync(filePaths, options, async (filePath, ct) =>
        {
            try
            {
                using var input = new OcrInput();

                if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
                    input.LoadPdf(filePath);
                else
                    input.LoadImage(filePath);

                var result = await _ocr.ReadAsync(input);
                results.Add(result.Text);
                _logger.LogInformation("Processed {FilePath} at {Confidence:F1}% confidence",
                    filePath, result.Confidence);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "OCR failed for {FilePath}", filePath);
                results.Add(string.Empty);
            }
        });

        return results.ToList();
    }

    public void CreateSearchablePdf(string inputPath, string outputPath)
    {
        using var input = new OcrInput();

        if (inputPath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(inputPath);
        else
            input.LoadImage(inputPath);

        _ocr.Read(input).SaveAsSearchablePdf(outputPath);
        _logger.LogInformation("Searchable PDF written to {OutputPath}", outputPath);
    }
}
using IronOcr;
using Microsoft.Extensions.Logging;

public class ProductionOcrService
{
    private readonly IronTesseract _ocr;
    private readonly ILogger<ProductionOcrService> _logger;

    public ProductionOcrService(ILogger<ProductionOcrService> logger)
    {
        _logger = logger;
        _ocr = new IronTesseract
        {
            Configuration =
            {
                RenderSearchablePdfsAndHocr = true,
                ReadBarCodes = true
            }
        };
    }

    public async Task<IReadOnlyList<string>> ProcessBatchAsync(
        IEnumerable<string> filePaths,
        int maxDegreeOfParallelism = 4)
    {
        var results = new System.Collections.Concurrent.ConcurrentBag<string>();

        var options = new ParallelOptions
        {
            MaxDegreeOfParallelism = maxDegreeOfParallelism
        };

        await Parallel.ForEachAsync(filePaths, options, async (filePath, ct) =>
        {
            try
            {
                using var input = new OcrInput();

                if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
                    input.LoadPdf(filePath);
                else
                    input.LoadImage(filePath);

                var result = await _ocr.ReadAsync(input);
                results.Add(result.Text);
                _logger.LogInformation("Processed {FilePath} at {Confidence:F1}% confidence",
                    filePath, result.Confidence);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "OCR failed for {FilePath}", filePath);
                results.Add(string.Empty);
            }
        });

        return results.ToList();
    }

    public void CreateSearchablePdf(string inputPath, string outputPath)
    {
        using var input = new OcrInput();

        if (inputPath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(inputPath);
        else
            input.LoadImage(inputPath);

        _ocr.Read(input).SaveAsSearchablePdf(outputPath);
        _logger.LogInformation("Searchable PDF written to {OutputPath}", outputPath);
    }
}
$vbLabelText   $csharpLabel

MaxDegreeOfParallelism 캡은 파일이 클 때 메모리 소진을 방지합니다. 4의 값은 4코어 서버에서 잘 작동합니다; 메모리 사용량을 프로파일링한 후에만 증가하십시오. Azure Functions 또는 AWS Lambda 배치의 경우, 함수 인스턴스당 동시성을 1로 설정하고 대신 수평으로 확장하십시오.

CreateSearchablePdf는 원본 이미지를 시각적 레이어로 보존하고 인식된 텍스트를 그 아래에 보이지 않게 삽입하여 PDF를 생성합니다. 이것은 PDF 뷰어에서의 전체 텍스트 검색과 검색 엔진에 의한 인덱싱을 허용합니다 -- 문서 관리 시스템의 일반적인 요구 사항입니다.

생산에서 신뢰성 점수 모니터링

모든 OcrResult는 인식된 텍스트에 대한 엔진의 확신도를 반영하는 Confidence 속성(0-100)을 노출합니다. 로그 인프라에서 이 메트릭을 추적하면 문서 품질이 저하될 때 조기 경고 신호를 제공 -- 예를 들어, 스캐너의 보정이 흘러가거나 새로운 문서 공급업체가 예상보다 낮은 DPI 스캔을 보낼 경우.

실용적인 임계값 전략: 신뢰도가 80 이하일 때 경고를 로깅하고, 70 이하일 때 전처리-재시도 패스를 트리거하며, 60 이하일 때 문서를 사람의 검토를 위해 표시합니다. 이 계층화된 접근 방식은 다운스트림 시스템에서 무언의 데이터 손상을 일으키기 전에 품질 문제를 포착합니다.

Microsoft .NET 로깅 문서는 ASP.NET Core의 내장 DI 컨테이너와 통합하는 팀을 위해 위 배치 서비스에 사용된 ILogger 패턴을 다룹니다.

스캔된 문서에서 구조화된 데이터를 어떻게 추출합니까?

텍스트 추출이 첫 번째 단계입니다. 두 번째 단계는 해당 텍스트를 응용 프로그램에서 작동할 수 있는 형식의 필드로 구문 분석하는 것입니다. 이 패턴은 IronOCR의 판독 패스를 .NET의 Regex와 결합하여 송장, 양식 및 보고서에서 구조화된 데이터를 가져옵니다.

using IronOcr;
using System.Text.RegularExpressions;

public record Invoice(
    string? InvoiceNumber,
    DateOnly? Date,
    decimal? TotalAmount,
    string RawText
);

public class InvoiceOcrService
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public Invoice ExtractInvoiceData(string invoicePath)
    {
        using var input = new OcrInput();

        if (invoicePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(invoicePath);
        else
            input.LoadImage(invoicePath);

        input.DeNoise();
        input.Deskew();

        var result = _ocr.Read(input);
        string text = result.Text;

        return new Invoice(
            InvoiceNumber: ExtractInvoiceNumber(text),
            Date: ExtractDate(text),
            TotalAmount: ExtractAmount(text),
            RawText: text
        );
    }

    private static string? ExtractInvoiceNumber(string text)
    {
        var match = Regex.Match(text, @"Invoice\s*#?:?\s*(\S+)", RegexOptions.IgnoreCase);
        return match.Success ? match.Groups[1].Value : null;
    }

    private static DateOnly? ExtractDate(string text)
    {
        // Numeric format: MM/DD/YYYY
        var numeric = Regex.Match(text, @"\b(\d{1,2}/\d{1,2}/\d{2,4})\b");
        if (numeric.Success && DateTime.TryParse(numeric.Groups[1].Value, out var d1))
            return DateOnly.FromDateTime(d1);

        // Written format: January 15, 2025
        var written = Regex.Match(text,
            @"\b(January|February|March|April|May|June|July|August|September|October|November|December)\s+(\d{1,2}),?\s+(\d{4})\b",
            RegexOptions.IgnoreCase);
        if (written.Success && DateTime.TryParse(written.Value, out var d2))
            return DateOnly.FromDateTime(d2);

        return null;
    }

    private static decimal? ExtractAmount(string text)
    {
        var match = Regex.Match(text, @"\$\s*(\d+(?:\.\d{2})?)");
        return match.Success && decimal.TryParse(match.Groups[1].Value, out var amt)
            ? amt
            : null;
    }
}
using IronOcr;
using System.Text.RegularExpressions;

public record Invoice(
    string? InvoiceNumber,
    DateOnly? Date,
    decimal? TotalAmount,
    string RawText
);

public class InvoiceOcrService
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public Invoice ExtractInvoiceData(string invoicePath)
    {
        using var input = new OcrInput();

        if (invoicePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(invoicePath);
        else
            input.LoadImage(invoicePath);

        input.DeNoise();
        input.Deskew();

        var result = _ocr.Read(input);
        string text = result.Text;

        return new Invoice(
            InvoiceNumber: ExtractInvoiceNumber(text),
            Date: ExtractDate(text),
            TotalAmount: ExtractAmount(text),
            RawText: text
        );
    }

    private static string? ExtractInvoiceNumber(string text)
    {
        var match = Regex.Match(text, @"Invoice\s*#?:?\s*(\S+)", RegexOptions.IgnoreCase);
        return match.Success ? match.Groups[1].Value : null;
    }

    private static DateOnly? ExtractDate(string text)
    {
        // Numeric format: MM/DD/YYYY
        var numeric = Regex.Match(text, @"\b(\d{1,2}/\d{1,2}/\d{2,4})\b");
        if (numeric.Success && DateTime.TryParse(numeric.Groups[1].Value, out var d1))
            return DateOnly.FromDateTime(d1);

        // Written format: January 15, 2025
        var written = Regex.Match(text,
            @"\b(January|February|March|April|May|June|July|August|September|October|November|December)\s+(\d{1,2}),?\s+(\d{4})\b",
            RegexOptions.IgnoreCase);
        if (written.Success && DateTime.TryParse(written.Value, out var d2))
            return DateOnly.FromDateTime(d2);

        return null;
    }

    private static decimal? ExtractAmount(string text)
    {
        var match = Regex.Match(text, @"\$\s*(\d+(?:\.\d{2})?)");
        return match.Success && decimal.TryParse(match.Groups[1].Value, out var amt)
            ? amt
            : null;
    }
}
$vbLabelText   $csharpLabel

이 접근 방식은 각 필드가 양식의 정확한 위치에 나타날 때 지역 기반 OCR과 잘 맞습니다. 경계 상자를 제공하여 전체 페이지 인식을 생략하고 청구서 번호 또는 총계를 포함하는 영역만 대상으로 하여 고정 레이아웃 문서의 처리 시간을 대폭 줄입니다.

테이블 및 구조화된 양식을 포함한 보다 고급 추출 시나리오의 경우 제품 사이트에서 IronOCR 데이터 추출 예제를 참조하세요.

.NET에서 다국어 OCR을 어떻게 처리합니까?

많은 조직이 한 가지 이상의 언어로 문서를 처리합니다 - 수출입 양식, 국제 계약, 다국어 고객 제출 양식 등. IronOCR는 읽기 호출 전에 언어 팩을 구성할 수 있게 하여 이를 처리합니다.

using IronOcr;

// Configure multi-language recognition
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.EnglishBest;  // Swap for any of 125+ supported languages

// For mixed-language documents, combine language packs
ocr.AddSecondaryLanguage(OcrLanguage.German);

using var input = new OcrInput();
input.LoadPdf("multilingual-contract.pdf");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;

// Configure multi-language recognition
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.EnglishBest;  // Swap for any of 125+ supported languages

// For mixed-language documents, combine language packs
ocr.AddSecondaryLanguage(OcrLanguage.German);

using var input = new OcrInput();
input.LoadPdf("multilingual-contract.pdf");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

IronOCR 언어 지원 페이지에는 다운로드 지침과 함께 125개 이상의 사용 가능한 언어 팩이 나열되어 있습니다. 언어 팩은 NuGet 패키지로 제공되며(예: IronOcr.Languages.German) 이미 사용 중인 동일한 패키지 관리 워크플로에 통합됩니다.

라틴 알파벳 외의 문자 집합의 경우 - 아랍어, 중국어, 일본어, 한국어 - IronOCR는 오른쪽에서 왼쪽으로의 텍스트 방향과 이데오그램 스크립트를 처리하는 데 최적화된 모델을 제공합니다. 구성 세부 사항은 CJK OCR 가이드를 참조하세요.

다음 단계는 무엇입니까?

이제 .NET 10 응용 프로그램에 생산 등급의 OCR을 추가하는 데 필요한 패턴을 갖추었습니다: 기본 텍스트 추출, 어려운 스캔을 위한 전처리, 비동기 배치 처리, 구조화된 데이터 구문 분석, 그리고 다국어 지원.

여기에서 프로젝트 요구 사항에 따라 다음 영역을 탐색해 보세요:

무료 체험판 라이센스로 시작하여 계층에 가입하기 전에 자신의 문서에서 전체 기능 세트를 평가하세요.

!{--010011000100100101000010010100100100000101010010010110010101111101001110010101010001110100010101010100010111110100100101001110010100110101010001000001010011000100110001001100010111110100001001001100010011110100001101001011--}

자주 묻는 질문

.NET OCR SDK란 무엇인가요?

IronOCR 의 .NET OCR SDK는 광학 문자 인식 기능을 C# 애플리케이션에 통합하도록 설계된 라이브러리로, 개발자가 이미지, PDF 및 스캔 문서에서 텍스트를 추출할 수 있도록 합니다.

IronOCR의 .NET SDK의 주요 기능은 무엇입니까?

IronOCR의 .NET SDK는 간단한 API, 다국어 지원, 크로스 플랫폼 호환성, 다양한 파일 형식 및 저품질 스캔 처리를 위한 고급 기능을 제공합니다.

IronOCR 다양한 언어를 어떻게 처리하나요?

IronOCR의 .NET SDK는 다국어를 지원하므로 추가 설정 없이 다양한 언어로 작성된 문서에서 텍스트를 추출하고 인식할 수 있습니다.

IronOCR 저품질 스캔도 처리할 수 있나요?

네, IronOCR 은 고급 알고리즘을 사용하여 품질이 낮은 스캔 파일도 효과적으로 처리하도록 설계되었으며, 까다로운 환경에서도 텍스트 인식 정확도를 향상시킵니다.

IronOCR의 .NET SDK는 크로스 플랫폼을 지원합니까?

IronOCR의 .NET SDK는 크로스 플랫폼을 지원하므로 다양한 운영 체제에서 사용할 수 있어 여러 개발 환경에 적합합니다.

IronOCR 어떤 파일 형식을 지원하나요?

IronOCR 이미지, PDF, 스캔 문서 등 다양한 파일 형식을 지원하여 여러 매체에서 텍스트 인식 작업을 유연하게 수행할 수 있도록 합니다.

개발자는 IronOCR 프로젝트에 어떻게 통합할 수 있을까요?

개발자는 IronOCR의 형식화된 API를 사용하여 C# 프로젝트에 IronOCR 통합할 수 있으므로 애플리케이션에 OCR 기능을 추가하는 프로세스가 간소화됩니다.

IronOCR 의 활용 사례는 무엇인가요?

IronOCR 문서 관리 시스템, 자동 데이터 입력, 콘텐츠 디지털화 및 이미지나 PDF에서 텍스트를 추출해야 하는 모든 응용 분야에서 사용할 수 있습니다.

칸나오팟 우돈판트
소프트웨어 엔지니어
카나팟은 소프트웨어 엔지니어가 되기 전 일본 홋카이도 대학교에서 환경 자원학 박사 학위를 취득했습니다. 학위 과정 중에는 생물생산공학과 소속 차량 로봇 연구실에서 활동하기도 했습니다. 2022년에는 C# 기술을 활용하여 Iron Software의 엔지니어링 팀에 합류했고, 현재 IronPDF 개발에 집중하고 있습니다. 카나팟은 IronPDF에 사용되는 대부분의 코드를 직접 작성하는 개발자로부터 배울 수 있다는 점에 만족하며, 동료들과의 소통을 통해 배우는 것 외에도 Iron Software에서 일하는 즐거움을 누리고 있습니다. 코딩이나 문서 작업을 하지 않을 때는 주로 PS5로 게임을 하거나 The Last of Us를 다시 시청하는 것을 즐깁니다.

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me