푸터 콘텐츠로 바로가기
다른 구성 요소와 비교

IronOCR 과 Aspose.OCR 비교

Asprise OCR은 처음에 자바 라이브러리를 제공하고 .NET을 부차적인 대상으로 취급합니다. — 이 설계 결정은 모든 계층에 드러납니다, 자바 예제로 작성된 문서부터 플랫폼별 DLL(aocr.dll, aocr_x64.dll, libaocr.so, libaocr.dylib)이 필요한 네이티브 바이너리 배포 모델까지 소프트웨어를 실행하는 모든 컴퓨터에 적용됩니다. 스레딩 모델은 이러한 문제를 더욱 악화시킵니다. Lite 및 STANDARD 라이선스는 계약상 단일 스레드, 단일 프로세스 실행으로 제한되므로 해당 계층에서 Asprise를 호출하는 모든 ASP.NET Core 엔드포인트, Windows 서비스 또는 Azure 함수는 라이선스 계약을 위반하게 됩니다. 실제 운영 시스템을 구축하는 .NET팀에게 이러한 문제는 이론적인 우려 사항이 아니라, 프로덕션 환경에 도달하기 전에 값비싼 Enterprise 라이선스를 구매하거나 라이브러리를 교체해야 하는 배포 차단 요소입니다.

Asprise OCR이해하기

Asprise OCR은 Asprise Inc.에서 개발한 상용 OCR 제품입니다. 이 제품은 원래 자바 OCR 엔진으로 개발되었으며, 이후 관리형 C# 코드와 비관리형 OCR 바이너리를 연결하는 네이티브 라이브러리 래퍼를 통해 .NET지원이 추가되었습니다. 이 브리지 아키텍처는 .NET개발자를 위한 라이브러리의 핵심적인 특징입니다.

주요 건축적 특징:

  • 자바 우선 설계: 모든 주요 문서, 샘플 코드 및 SDK 예제는 자바로 작성되었습니다. .NET개발자는 자바 코드를 머릿속으로 번역하거나 부족한 보조 문서에 의존합니다.
  • 네이티브 바이너리 종속성: 플랫폼별 관리되지 않는 DLL이 배포 디렉터리 또는 시스템 경로에 있어야 합니다. 올바른 바이너리는 프로세스 아키텍처와 일치해야 합니다 — 32비트 프로세스는 aocr.dll를 필요로 하고, 64비트 프로세스는 aocr_x64.dll를 필요로 합니다.
  • 수동 엔진 라이프사이클: 이 라이브러리는 자바 기원에서 유래한 C 스타일 초기화 패턴(Ocr.SetUp(), ocr.StartEngine(), ocr.StopEngine())을 노출합니다. IDisposable 구현이 없습니다. StopEngine()를 잊어버리면 네이티브 메모리가 누출됩니다.
  • 라이선스 등급별 스레드 제한: Lite (~$299) 및 STANDARD(~$699) 등급은 단일 스레드, 단일 프로세스 실행만 허용합니다. 멀티스레딩을 사용하려면 Enterprise 필요하며, 이를 위해서는 영업팀에 문의해야 합니다.
  • 예외가 아닌 오류 코드: 인식 실패는 null 반환 또는 C/Java 오류 코드 관례와 일치하는 "ERROR:" 접두사가 있는 문자열로 표면화되며, .NET예외 패턴과는 다릅니다.
  • 20개 이상의 OCR 언어 지원: .NET생태계용으로 개발된 대안들에 비해 지원 언어 수가 상당히 적습니다.

엔진 수명 주기 문제

모든 Asprise OCR호출에는 명시적인 엔진 관리가 필요합니다. 이 패턴은 정적 전역 설정, 인스턴스 생성, 언어 문자열을 사용한 엔진 시작, 완료 후 엔진 중지라는 네 가지 필수 단계로 구성됩니다. 엔진 정지를 건너뛰면 가비지 컬렉터가 관리되지 않는 메모리를 해제할 수 없으므로 네이티브 리소스가 누수됩니다.

// Asprise: four required steps before reading a single image
Ocr.SetUp();                              // Static global init
Ocr ocr = new Ocr();
try
{
    ocr.StartEngine("eng", Ocr.SPEED_FAST);   // Allocates native engine
    string text = ocr.Recognize(
        imagePath,
        Ocr.RECOGNIZE_TYPE_TEXT,
        Ocr.OUTPUT_FORMAT_PLAINTEXT);
    return text;
}
finally
{
    ocr.StopEngine();                         // Must call — no IDisposable fallback
}
// Asprise: four required steps before reading a single image
Ocr.SetUp();                              // Static global init
Ocr ocr = new Ocr();
try
{
    ocr.StartEngine("eng", Ocr.SPEED_FAST);   // Allocates native engine
    string text = ocr.Recognize(
        imagePath,
        Ocr.RECOGNIZE_TYPE_TEXT,
        Ocr.OUTPUT_FORMAT_PLAINTEXT);
    return text;
}
finally
{
    ocr.StopEngine();                         // Must call — no IDisposable fallback
}
' Asprise: four required steps before reading a single image
Ocr.SetUp()                              ' Static global init
Dim ocr As New Ocr()
Try
    ocr.StartEngine("eng", Ocr.SPEED_FAST)   ' Allocates native engine
    Dim text As String = ocr.Recognize( _
        imagePath, _
        Ocr.RECOGNIZE_TYPE_TEXT, _
        Ocr.OUTPUT_FORMAT_PLAINTEXT)
    Return text
Finally
    ocr.StopEngine()                         ' Must call — no IDisposable fallback
End Try
$vbLabelText   $csharpLabel

이 패턴은 세 가지 일반적인 상황에서 조용히 실패합니다: StopEngine()가 호출되기 전에 처리되지 않은 예외, 정리 과정을 건너뛰는 리팩토링된 코드 경로, 심지어 병렬 처리를 허용할 수 있는 스레딩을 허용하지 않는 LITE/STANDARD에서의 동시 사용. finally 블록은 첫 번째 문제를 완화하지만, 어쨌든 서버 작업에 대한 라이선스 제한 때문에 패턴은 무의미합니다.

IronOCR이해하기

IronOCR 은 .NET용으로 처음부터 개발된 상용 OCR 라이브러리입니다. 이 라이브러리는 최적화된 Tesseract 5 엔진과 자동 전처리, 네이티브 PDF 지원, 그리고 표준 .NET규칙을 따르는 관리형 API를 제공합니다.

주요 특징:

  • 단일 NuGet 패키지: dotnet add package IronOcr는 모든 것을 설치합니다 — 네이티브 바이너리 관리, tessdata 폴더, 플랫폼별 구성 없음.
  • IDisposable 자원 관리: OcrInput은(는) IDisposable을 구현합니다. using 문장은 정리를 자동으로 처리합니다.
  • 모든 라이선스 등급에서 스레드 안전성 보장: 인위적인 스레드 제한 없음. IronTesseract 인스턴스는 $999 Lite 라이선스에서 병렬로 사용해도 안전합니다.
  • 자동 전처리: 내장된 Deskew(), DeNoise(), Contrast(), Binarize(), 및 EnhanceResolution() 메서드는 외부 이미지 처리 라이브러리가 필요하지 않게 합니다.
  • 네이티브 PDF 입력: PDF 경로를 직접 전달할 수 있습니다. 페이지를 이미지로 변환하기 위한 외부 렌더링 라이브러리가 필요하지 않습니다.
  • 125개 이상의 언어: 별도의 NuGet 패키지(IronOcr.Languages.French 등)로 제공되며 필요할 때만 설치됩니다.
  • 검색 가능한 PDF 출력: result.SaveAsSearchablePdf()는 모든 OCR 결과에서 PDF/A 준수 출력물을 생성합니다.
  • 구조화된 데이터 접근: 결과는 단어 수준, 줄 수준 및 단락 수준의 텍스트를 픽셀 좌표 및 단어별 신뢰도 점수와 함께 표시합니다.

기능 비교

기능 Asprise OCR IronOCR
주요 플랫폼 자바 .NET
NuGet 배포 래퍼 + 네이티브 DLL 단일 패키지, 추가 구성품 없음
스레딩(모든 단계) Enterprise 전용 모든 등급
서버/웹 애플리케이션 사용 Enterprise 전용 모든 등급
네이티브 PDF 입력 아니요
내장 전처리 기능 아니요
OCR 언어 20세 이상 125+
검색 가능한 PDF 출력 아니요

상세 기능 비교

기능 Asprise OCR IronOCR
아키텍처
디자인 출처 Java, .NET(보조) .NET네이티브
API 스타일 정수 상수를 사용하는 C 스타일 유창한 C#
IDisposable / using 패턴 구현되지 않음 예 (OcrInput)
오류 처리 null/오류 문자열 반환 .NET 예외
네이티브로부터의 예외 전파 상호 운용성 격차 관리되는 예외
스레딩 및 서버 사용
멀티스레딩 — Lite 티어 금지됨 허용됨
멀티스레딩 — 표준 계층 금지됨 허용됨
멀티스레딩 — Enterprise/상위 계층 허용됨 허용됨
ASP.NET Core 웹 API Enterprise 필요합니다. 모든 등급
Azure Functions / AWS 람다 Enterprise 필요합니다. 모든 등급
병렬.각 배치에 대해 Enterprise 필요합니다. 모든 등급
입력 지원
이미지 파일(JPG, PNG, TIFF)
네이티브 PDF 입력 아니요 (외부 라이브러리 필요)
비밀번호로 보호된 PDF 아니요
바이트 배열/스트림 입력 제한적
여러 페이지로 구성된 TIFF 파일 제한적
전처리
디스큐 수동/외부 내장형
노이즈 제거 수동/외부 내장형
명암 대비 강화 수동/외부 내장형
이진화 수동/외부 내장형
해상도 배율(DPI) 수동/외부 내장형
산출
일반 텍스트
검색 가능한 PDF 출력 아니요
단어 좌표 제한적
단어별 신뢰도 점수 아니요
hOCR 내보내기 아니요
언어
언어 개수 20세 이상 125+
언어 설치 번들 NuGet 패키지
강력한 타입의 언어 열거형 아니요 (문자열 코드) 예 (OcrLanguage)
배포
네이티브 바이너리 필요 예 (플랫폼별 DLL) 아니요
Tessdata 폴더 관리 아니요 아니요
Docker 수동 바이너리 구성 개봉 즉시 작동
Linux libaocr.so 필요 NuGet 핸들
가격
입장료 Asprise에 가격 문의 (LITE, 단일 스레드 전용) $999 (Lite, 모든 기능)
서버 사용 진입 가격 Enterprise (영업팀에 문의) $999 (Lite)

네이티브 .NET아키텍처와 자바 브리지 아키텍처 비교

.NET 팀에게 있어 근본적인 질문은 어떤 라이브러리가 서류상으로 더 많은 기능을 제공하는가가 아니라, 실제로 사용하는 배포 및 운영 환경에서 어떤 라이브러리가 .NET의 핵심 구성 요소로서 제대로 작동하는가입니다.

놀라운 접근

Asprise는 P/Invoke 마샬링을 통해 관리형 .NET코드와 비관리형 OCR 엔진 간의 통신을 수행합니다. asprise-vs-ironocr-examples.cs 소스는 기본 메커니즘을 보여줍니다:

// Asprise interop layer — bridging managed C# to native OCR engine
[DllImport("aocr.dll")]
private static extern IntPtr OCR(string imagePath, int type);

public string ExtractText(string imagePath)
{
    // P/Invoke call into unmanaged DLL
    IntPtr result = OCR(imagePath, 0);
    return Marshal.PtrToStringAnsi(result);  // Manual string marshal
}
// Asprise interop layer — bridging managed C# to native OCR engine
[DllImport("aocr.dll")]
private static extern IntPtr OCR(string imagePath, int type);

public string ExtractText(string imagePath)
{
    // P/Invoke call into unmanaged DLL
    IntPtr result = OCR(imagePath, 0);
    return Marshal.PtrToStringAnsi(result);  // Manual string marshal
}
Imports System.Runtime.InteropServices

' Asprise interop layer — bridging managed VB.NET to native OCR engine
Private Class OCRInterop
    <DllImport("aocr.dll")>
    Private Shared Function OCR(imagePath As String, type As Integer) As IntPtr
    End Function

    Public Function ExtractText(imagePath As String) As String
        ' P/Invoke call into unmanaged DLL
        Dim result As IntPtr = OCR(imagePath, 0)
        Return Marshal.PtrToStringAnsi(result)  ' Manual string marshal
    End Function
End Class
$vbLabelText   $csharpLabel

상위 수준 API에서 개발자는 클래스 래퍼를 통해 동일한 브리지를 호출하지만 배포 요구 사항은 변경되지 않습니다. 모든 대상 시스템에는 올바른 프로세스 아키텍처와 일치하는 올바른 경로에 올바른 네이티브 바이너리가 필요합니다. aocr.dll 대신 aocr_x64.dll를 포함하는 64비트 배포는 실행 시 BadImageFormatException를 던집니다. libaocr.soLD_LIBRARY_PATH에 없는 리눅스 Docker 컨테이너는 DllNotFoundException를 던집니다. 빌드 시점에 두 오류 모두 감지되지 않습니다.

IronOCR접근법

IronOCR 단일 NuGet 참조로 설치됩니다. 이 패키지는 NuGet의 플랫폼별 패키지 선택 메커니즘을 통해 모든 네이티브 종속성을 내부적으로 처리합니다.

// Installation — one command, all platforms
// dotnet add package IronOcr

// License setup
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

// Basic OCR — no native binary setup, no tessdata, no config files
var text = new IronTesseract().Read("document.jpg").Text;
// Installation — one command, all platforms
// dotnet add package IronOcr

// License setup
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

// Basic OCR — no native binary setup, no tessdata, no config files
var text = new IronTesseract().Read("document.jpg").Text;
Imports IronOcr

' Installation — one command, all platforms
' dotnet add package IronOcr

' License setup
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"

' Basic OCR — no native binary setup, no tessdata, no config files
Dim text As String = New IronTesseract().Read("document.jpg").Text
$vbLabelText   $csharpLabel

using 문장은 OcrInput에서 수동 엔진 라이프사이클 호출을 대체합니다. 호출할 StartEngine()도 없고 잊어버릴 StopEngine()도 없습니다. 가비지 컬렉터 및 IDisposable 패턴은 예외 시나리오에서 정리를 올바르게 처리하여 모든 OCR 호출 주위에 try/finally 발판이 필요하지 않습니다.

자세한 설정 방법은 IronTesseract 설정 가이드를 참조하십시오.

나사산 모델

스레딩 제한은 .NET서버 개발자에게 있어 Asprise와 다른 대안들 간의 가장 중요한 차이점입니다. 이는 성능 문제가 아니라 라이선스 준수 문제입니다.

놀라운 접근

Lite 및 STANDARD 라이선스는 멀티스레드 및 멀티프로세스 실행을 명시적으로 금지합니다. 두 개 이상의 스레드에서 동시에 Asprise를 호출하는 코드는 해당 등급의 라이선스 계약을 위반하는 것입니다. ASP.NET Core 기본적으로 스레드 풀을 사용하여 요청을 처리합니다. 이는 Asprise를 호출하는 모든 표준 웹 API 컨트롤러가 Lite/STANDARD 버전에서 라이선스 위반이 된다는 것을 의미합니다.

// ASPRISE LITE/STANDARD — violates license in ASP.NET Core context
// Web server thread pool = multiple concurrent threads = prohibited
[ApiController]
public class OcrController : ControllerBase
{
    [HttpPost("extract")]
    public IActionResult ExtractText(IFormFile file)
    {
        // Two concurrent requests = two threads = license violation
        var ocr = new Ocr();
        ocr.StartEngine("eng", Ocr.SPEED_FAST);
        var text = ocr.Recognize(tempPath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT);
        ocr.StopEngine();
        return Ok(text);
    }
}
// ASPRISE LITE/STANDARD — violates license in ASP.NET Core context
// Web server thread pool = multiple concurrent threads = prohibited
[ApiController]
public class OcrController : ControllerBase
{
    [HttpPost("extract")]
    public IActionResult ExtractText(IFormFile file)
    {
        // Two concurrent requests = two threads = license violation
        var ocr = new Ocr();
        ocr.StartEngine("eng", Ocr.SPEED_FAST);
        var text = ocr.Recognize(tempPath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT);
        ocr.StopEngine();
        return Ok(text);
    }
}
Imports Microsoft.AspNetCore.Mvc

' ASPRISE LITE/STANDARD — violates license in ASP.NET Core context
' Web server thread pool = multiple concurrent threads = prohibited
<ApiController>
Public Class OcrController
    Inherits ControllerBase

    <HttpPost("extract")>
    Public Function ExtractText(file As IFormFile) As IActionResult
        ' Two concurrent requests = two threads = license violation
        Dim ocr As New Ocr()
        ocr.StartEngine("eng", Ocr.SPEED_FAST)
        Dim text As String = ocr.Recognize(tempPath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT)
        ocr.StopEngine()
        Return Ok(text)
    End Function
End Class
$vbLabelText   $csharpLabel

Lite/STANDARD 버전에서 배치 처리는 사용 가능한 CPU 코어 수와 관계없이 순차적으로 진행됩니다.

// ASPRISE LITE/STANDARD — sequential only (100 docs at 2 sec each = 3+ minutes)
Ocr.SetUp();
Ocr ocr = new Ocr();
try
{
    ocr.StartEngine("eng", Ocr.SPEED_FAST);
    foreach (var path in imagePaths)  // Cannot use Parallel.ForEach — license violation
    {
        string text = ocr.Recognize(path, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT);
        results.Add(text);
    }
}
finally
{
    ocr.StopEngine();
}
// ASPRISE LITE/STANDARD — sequential only (100 docs at 2 sec each = 3+ minutes)
Ocr.SetUp();
Ocr ocr = new Ocr();
try
{
    ocr.StartEngine("eng", Ocr.SPEED_FAST);
    foreach (var path in imagePaths)  // Cannot use Parallel.ForEach — license violation
    {
        string text = ocr.Recognize(path, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT);
        results.Add(text);
    }
}
finally
{
    ocr.StopEngine();
}
' ASPRISE LITE/STANDARD — sequential only (100 docs at 2 sec each = 3+ minutes)
Ocr.SetUp()
Dim ocr As New Ocr()
Try
    ocr.StartEngine("eng", Ocr.SPEED_FAST)
    For Each path In imagePaths ' Cannot use Parallel.ForEach — license violation
        Dim text As String = ocr.Recognize(path, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT)
        results.Add(text)
    Next
Finally
    ocr.StopEngine()
End Try
$vbLabelText   $csharpLabel

ENTERPRISE는 스레드 제한을 제거하지만, ENTERPRISE는 게시된 가격 없이 Asprise 판매에 문의가 필요합니다.

IronOCR접근법

IronTesseract는 스레드 안전하며, 어떤 라이선스 계층에서도 스레딩 제한이 없습니다. $999 Lite 라이선스에서 병렬 배치 처리가 완전히 지원됩니다:

//IronOCR— parallel batch on any license tier
// 100 docs at 2 sec each, 8 cores = ~25 seconds vs 200 seconds sequential
var results = imagePaths
    .AsParallel()
    .Select(path => new IronTesseract().Read(path).Text)
    .ToList();
//IronOCR— parallel batch on any license tier
// 100 docs at 2 sec each, 8 cores = ~25 seconds vs 200 seconds sequential
var results = imagePaths
    .AsParallel()
    .Select(path => new IronTesseract().Read(path).Text)
    .ToList();
Imports System.Linq

'IronOCR— parallel batch on any license tier
' 100 docs at 2 sec each, 8 cores = ~25 seconds vs 200 seconds sequential
Dim results = imagePaths _
    .AsParallel() _
    .Select(Function(path) New IronTesseract().Read(path).Text) _
    .ToList()
$vbLabelText   $csharpLabel

ASP.NET Core 컨트롤러는 특별한 설정 없이 작동합니다.

//IronOCR— concurrent requests on any license tier
[ApiController]
public class OcrController : ControllerBase
{
    [HttpPost("extract")]
    public IActionResult ExtractText(IFormFile file)
    {
        // Thread-safe on Lite, Plus, Professional, Unlimited — all tiers
        var text = new IronTesseract().Read(tempPath).Text;
        return Ok(text);
    }
}
//IronOCR— concurrent requests on any license tier
[ApiController]
public class OcrController : ControllerBase
{
    [HttpPost("extract")]
    public IActionResult ExtractText(IFormFile file)
    {
        // Thread-safe on Lite, Plus, Professional, Unlimited — all tiers
        var text = new IronTesseract().Read(tempPath).Text;
        return Ok(text);
    }
}
Imports Microsoft.AspNetCore.Mvc

<ApiController>
Public Class OcrController
    Inherits ControllerBase

    <HttpPost("extract")>
    Public Function ExtractText(file As IFormFile) As IActionResult
        ' Thread-safe on Lite, Plus, Professional, Unlimited — all tiers
        Dim text = New IronTesseract().Read(tempPath).Text
        Return Ok(text)
    End Function
End Class
$vbLabelText   $csharpLabel

배치 작업 부하에서 병렬 처리량 패턴에 대해서는 멀티스레딩 예제를 참조하십시오.

이미지 전처리

Asprise는 이미지를 전처리 없이 자체 엔진으로 전달합니다. 스캔 품질이 낮은 이미지(페이지가 기울어지거나, 노이즈가 발생하거나, 대비가 낮은 경우)는 OCR 정확도를 직접적으로 저하시킵니다. 이는 인식 실행 전에 이미지 결함을 수정하는 전처리 단계가 없기 때문입니다.

놀라운 접근

전처리를 위해서는 외부 이미지 라이브러리가 필요합니다. Asprise를 사용하는 개발자는 ImageMagick, SkiaSharp 또는 System.Drawing과 같은 종속성을 추가하고, 전처리 작업을 수동으로 실행하고, 처리된 이미지를 임시 파일에 저장한 다음, 해당 파일을 Asprise에 전달합니다.

// Asprise preprocessing: external dependency required
// 1. Load with external library
// 2. Apply corrections (deskew, denoise, contrast) with external library
// 3. Save to temp file
// 4. Pass temp file to Asprise

var ocr = new Ocr();
ocr.StartEngine("eng", Ocr.SPEED_FAST);
// preprocessedImagePath comes from your external preprocessing pipeline
string text = ocr.Recognize(preprocessedImagePath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT);
ocr.StopEngine();
// Asprise preprocessing: external dependency required
// 1. Load with external library
// 2. Apply corrections (deskew, denoise, contrast) with external library
// 3. Save to temp file
// 4. Pass temp file to Asprise

var ocr = new Ocr();
ocr.StartEngine("eng", Ocr.SPEED_FAST);
// preprocessedImagePath comes from your external preprocessing pipeline
string text = ocr.Recognize(preprocessedImagePath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT);
ocr.StopEngine();
' Asprise preprocessing: external dependency required
' 1. Load with external library
' 2. Apply corrections (deskew, denoise, contrast) with external library
' 3. Save to temp file
' 4. Pass temp file to Asprise

Dim ocr As New Ocr()
ocr.StartEngine("eng", Ocr.SPEED_FAST)
' preprocessedImagePath comes from your external preprocessing pipeline
Dim text As String = ocr.Recognize(preprocessedImagePath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT)
ocr.StopEngine()
$vbLabelText   $csharpLabel

이로 인해 빌드 종속성이 추가되고, 추가 라이브러리로 인한 런타임 오버헤드가 발생하며, 개발자는 효과적인 보정을 구현하기 위해 이미지 처리에 대한 충분한 이해가 필요합니다.

IronOCR접근법

전처리는 OcrInput에 내장되어 있습니다. 외부 라이브러리를 사용하고 매개변수를 신중하게 조정하면 50~100줄이 걸리던 동일한 파이프라인이 이제 5개의 메서드 호출로 간소화됩니다.

//IronOCR— preprocessing built in, no external dependencies
using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");
input.Deskew();               // Correct page rotation
input.DeNoise();              // Remove scanner artifacts
input.Contrast();             // Improve text/background separation
input.Binarize();             // Convert to black/white for cleaner engine input
input.EnhanceResolution(300); // Scale to optimal DPI

var result = new IronTesseract().Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
//IronOCR— preprocessing built in, no external dependencies
using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");
input.Deskew();               // Correct page rotation
input.DeNoise();              // Remove scanner artifacts
input.Contrast();             // Improve text/background separation
input.Binarize();             // Convert to black/white for cleaner engine input
input.EnhanceResolution(300); // Scale to optimal DPI

var result = new IronTesseract().Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr

' IronOCR— preprocessing built in, no external dependencies
Using input As New OcrInput()
    input.LoadImage("low-quality-scan.jpg")
    input.Deskew()               ' Correct page rotation
    input.DeNoise()              ' Remove scanner artifacts
    input.Contrast()             ' Improve text/background separation
    input.Binarize()             ' Convert to black/white for cleaner engine input
    input.EnhanceResolution(300) ' Scale to optimal DPI

    Dim result = New IronTesseract().Read(input)
    Console.WriteLine($"Confidence: {result.Confidence}%")
End Using
$vbLabelText   $csharpLabel

회전 방향을 예측할 수 없는 스캔의 경우, 자동 기울기 보정 기능은 개발자가 회전 값을 감지하거나 지정할 필요 없이 임의의 각도를 처리합니다. 이미지 품질 보정 가이드는 전체 필터 세트와 각 필터 적용 시점에 대한 내용을 다룹니다.

PDF 처리

PDF 입력은 문서 처리 파이프라인에서 자주 요구되는 사항입니다. Asprise는 PDF를 기본적으로 지원하지 않으며, 이미지 파일을 기반으로 작동합니다. Asprise를 사용하여 PDF를 처리하려면 먼저 외부 라이브러리를 사용하여 각 페이지를 이미지로 변환한 다음 각 이미지 파일을 개별적으로 처리해야 합니다.

놀라운 접근

// Asprise PDF workaround — external library required to render PDF pages
var images = ExternalPdfLibrary.RenderPages("invoice.pdf");

Ocr.SetUp();
Ocr ocr = new Ocr();
try
{
    ocr.StartEngine("eng", Ocr.SPEED_FAST);
    var allText = new System.Text.StringBuilder();
    foreach (var imagePath in images)
    {
        string pageText = ocr.Recognize(imagePath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT);
        allText.Append(pageText);
    }
    return allText.ToString();
}
finally
{
    ocr.StopEngine();
}
// Also: clean up temp image files
// Asprise PDF workaround — external library required to render PDF pages
var images = ExternalPdfLibrary.RenderPages("invoice.pdf");

Ocr.SetUp();
Ocr ocr = new Ocr();
try
{
    ocr.StartEngine("eng", Ocr.SPEED_FAST);
    var allText = new System.Text.StringBuilder();
    foreach (var imagePath in images)
    {
        string pageText = ocr.Recognize(imagePath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT);
        allText.Append(pageText);
    }
    return allText.ToString();
}
finally
{
    ocr.StopEngine();
}
// Also: clean up temp image files
Imports System.Text

' Asprise PDF workaround — external library required to render PDF pages
Dim images = ExternalPdfLibrary.RenderPages("invoice.pdf")

Ocr.SetUp()
Dim ocr As New Ocr()
Try
    ocr.StartEngine("eng", Ocr.SPEED_FAST)
    Dim allText As New StringBuilder()
    For Each imagePath In images
        Dim pageText As String = ocr.Recognize(imagePath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT)
        allText.Append(pageText)
    Next
    Return allText.ToString()
Finally
    ocr.StopEngine()
End Try
' Also: clean up temp image files
$vbLabelText   $csharpLabel

이 접근 방식은 PDF 렌더링 종속성을 추가하며(일반적으로 iText, PDFSharp, 또는 상업적 렌더러), 임시 파일 관리가 필요하며, 기본 PDF 읽기기가 보존할 PDF 메타데이터와 구조를 잃습니다. 암호로 보호된 PDF 파일에는 세 번째 구성 요소가 필요합니다.

IronOCR접근법

IronOCR PDF 파일을 직접 읽습니다. OcrInput.LoadPdf() 메서드는 렌더링을 내부적으로 처리하며, 다중 페이지 문서와 비밀번호 보호 파일을 포함합니다:

//IronOCR— native PDF input, no external rendering library
using var input = new OcrInput();
input.LoadPdf("invoice.pdf");
var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);

// Password-protected PDFs — same API, one parameter
using var secureInput = new OcrInput();
secureInput.LoadPdf("confidential.pdf", Password: "secret");
var secureResult = new IronTesseract().Read(secureInput);

// Generate searchable PDF from a scanned document
var scanResult = new IronTesseract().Read("scanned-contract.pdf");
scanResult.SaveAsSearchablePdf("searchable-contract.pdf");
//IronOCR— native PDF input, no external rendering library
using var input = new OcrInput();
input.LoadPdf("invoice.pdf");
var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);

// Password-protected PDFs — same API, one parameter
using var secureInput = new OcrInput();
secureInput.LoadPdf("confidential.pdf", Password: "secret");
var secureResult = new IronTesseract().Read(secureInput);

// Generate searchable PDF from a scanned document
var scanResult = new IronTesseract().Read("scanned-contract.pdf");
scanResult.SaveAsSearchablePdf("searchable-contract.pdf");
Imports IronOcr

' IronOCR— native PDF input, no external rendering library
Using input As New OcrInput()
    input.LoadPdf("invoice.pdf")
    Dim result = New IronTesseract().Read(input)
    Console.WriteLine(result.Text)
End Using

' Password-protected PDFs — same API, one parameter
Using secureInput As New OcrInput()
    secureInput.LoadPdf("confidential.pdf", Password:="secret")
    Dim secureResult = New IronTesseract().Read(secureInput)
End Using

' Generate searchable PDF from a scanned document
Dim scanResult = New IronTesseract().Read("scanned-contract.pdf")
scanResult.SaveAsSearchablePdf("searchable-contract.pdf")
$vbLabelText   $csharpLabel

PDF OCR 가이드에서는 페이지 범위 선택, 혼합 PDF 유형 처리, 아카이빙 워크플로를 위한 검색 가능한 PDF 출력에 대해 다룹니다.

API 매핑 참조

Asprise OCR IronOCR에 상응하는
Ocr.SetUp() 필요하지 않음
new Ocr() new IronTesseract()
ocr.StartEngine("eng", Ocr.SPEED_FAST) 필수 사항이 아닙니다(엔진은 처음 사용 시 초기화됩니다).
ocr.Recognize(path, type, format) ocr.Read(path)
Ocr.RECOGNIZE_TYPE_TEXT 기본 동작
Ocr.RECOGNIZE_TYPE_BARCODE ocr.Configuration.ReadBarCodes = true
Ocr.RECOGNIZE_TYPE_ALL ocr.Configuration.ReadBarCodes = true
Ocr.OUTPUT_FORMAT_PLAINTEXT result.Text
Ocr.OUTPUT_FORMAT_XML result.Words / 구조화된 결과
Ocr.OUTPUT_FORMAT_PDF result.SaveAsSearchablePdf()
Ocr.SPEED_FASTEST ocr.Configuration 속도 설정
Ocr.SPEED_FAST 기본 설정
Ocr.SPEED_SLOW 더 높은 정확도 구성
ocr.StopEngine() 필요하지 않음 (using가 정리를 처리함)
언어 문자열 "eng+fra" ocr.Language = OcrLanguage.English; ocr.AddSecondaryLanguage(OcrLanguage.French)
수동 시도/최종 정리 using var input = new OcrInput()
오류 문자열 반환 값 표준 .NET예외

팀이 Asprise에서IronOCR로 전환을 고려할 때

생산 준비 차단 요인

스레드 제한은 대부분의 실제 운영 환경의 .NET워크로드에서 심각한 문제로 작용합니다. 한 팀이 개발 과정에서 Asprise Lite 사용하여 OCR 기능을 구축합니다. 단일 스레드 테스트를 통과하고 모든 기능이 정상적으로 작동합니다. 그런 다음 해당 기능이 ASP.NET Core API 뒤의 스테이징 환경으로 배포되고, 동시 테스트 요청이 들어오면 애플리케이션은 오류를 발생시키거나 기술적으로 규정을 준수하지 않는 상태로 작동합니다. 해결책은 Enterprise 으로 업그레이드(관련 비용 및 영업 담당자 참여 필요)하거나 라이브러리를 교체하는 것입니다. 프로덕션 단계가 아닌 스테이징 단계에서 이 단계에 도달하는 팀은 운이 좋은 것입니다. 출시 이후에 이를 발견한 사람들은 더욱 시급한 이주에 직면하게 됩니다. IronOCR은 이 전체 문제 범주를 제거합니다. — $999 Lite 라이선스는 동시 요청 처리, 배치 병렬성, Windows 서비스, 클라우드 기능을 제한 없이 지원합니다.

배포 복잡성 세금

Docker 컨테이너, LinuxVM, Kubernetes Pod와 같은 최신 배포 환경에서 운영하는 팀은 Asprise를 사용할 경우 순수 NuGet 패키지에서는 발생하지 않는 지속적인 유지 관리 비용을 지불해야 합니다. 모든 컨테이너 이미지 빌드에는 대상 아키텍처에 맞는 올바른 네이티브 바이너리가 포함되어야 합니다. 여러 플랫폼을 대상으로 하는 모든 CI/CD 파이프라인은 플랫폼별 파일 포함을 처리해야 합니다. 프로덕션 Linux컨테이너에서 네이티브 라이브러리가 누락된 것은 빌드 시간 오류가 아니라 런타임 오류입니다. 64비트 프로세스에 로드된 32비트 DLL을 디버깅하는 데 몇 시간을 소비해 본 팀은 그 비용을 구체적으로 이해합니다. IronOCR의 NuGet 전용 배포 방식은 이러한 배포 실패 유형을 완전히 제거합니다.

자바 문서화 문제

.NET 애플리케이션을 개발하는 팀에게는 자바 예제가 아닌 C# 예제가 필요합니다. Asprise의 주요 문서, API 참조 및 커뮤니티 리소스는 자바 개발자를 대상으로 합니다. Asprise 문서를 읽는 .NET개발자는 자바 구문, 자바 패키지 규칙 및 자바 관련 패턴을 C#에 해당하는 것으로 변환합니다. 하지만 .NET래퍼가 모든 자바 측 기능을 노출하지 않기 때문에 변환이 직접적이지 않은 경우도 있습니다. IronOCR의 문서, 튜토리얼 및 코드 샘플은 C# 개발자를 위해 작성되었습니다. 이미지에서 텍스트를 읽는 방법에 대한 튜토리얼 과 전체 튜토리얼 허브는 번역 작업 없이 모든 기능에 대한 작동하는 C# 예제를 제공합니다.

PDF 파이프라인 격차

스캔한 문서, 송장, 계약서 또는 양식을 PDF 형식으로 처리하는 팀은 종속성 그래프에 PDF 렌더링 라이브러리를 추가하지 않고는 Asprise를 사용할 수 없습니다. 해당 렌더링 라이브러리는 자체적인 라이선스 문제, 유지 관리 부담 및 잠재적인 호환성 문제를 야기합니다. OCR과 PDF를 단일 스택에서 모두 필요로 하는 팀의 경우,IronOCR두 기능을 모두 기본적으로 지원합니다. 스캔한 입력 파일에서 검색 가능한 PDF를 생성하는 기능(보관 및 규정 준수 워크플로에 일반적으로 필요한 기능)은 Asprise의 어떤 라이선스 등급에서도 동등한 기능을 제공하지 않습니다.

언어 지원 범위 격차

Asprise는 20개 이상의 OCR 언어를 지원합니다.IronOCR 125개 이상의 기능을 지원하며, 각 기능은 독립적인 NuGet 패키지로 설치할 수 있습니다.IronOCR에서 지원하지만 Asprise에서 지원하지 않는 아랍어, 힌디어, 태국어 또는 기타 수십 가지 언어로 문서를 처리하는 팀은 Asprise를 통해 다국어 지원을 받을 수 없습니다. 다국어 가이드 에서는 언어 팩 설치 및 결합, 여러 문자 체계에 걸친 동시 인식 등을 다룹니다.

일반적인 마이그레이션 고려사항

엔진 수명 주기 코드 교체

마이그레이션에서 가장 큰 기계적 변화는 Asprise 엔진 라이프사이클 패턴을 제거하고 직접 IronTesseract 인스턴스화로 대체하는 것입니다. 모든 SetUp() / StartEngine() / Recognize() / StopEngine() 시퀀스의 발생은 하나의 Read() 호출로 변환됩니다:

// Before: Asprise lifecycle (15 lines, manual cleanup)
Ocr.SetUp();
Ocr ocr = new Ocr();
try
{
    ocr.StartEngine("eng", Ocr.SPEED_FAST);
    string text = ocr.Recognize(
        imagePath,
        Ocr.RECOGNIZE_TYPE_TEXT,
        Ocr.OUTPUT_FORMAT_PLAINTEXT);
    return text;
}
finally
{
    ocr.StopEngine();
}

// After:IronOCR(1 line)
return new IronTesseract().Read(imagePath).Text;
// Before: Asprise lifecycle (15 lines, manual cleanup)
Ocr.SetUp();
Ocr ocr = new Ocr();
try
{
    ocr.StartEngine("eng", Ocr.SPEED_FAST);
    string text = ocr.Recognize(
        imagePath,
        Ocr.RECOGNIZE_TYPE_TEXT,
        Ocr.OUTPUT_FORMAT_PLAINTEXT);
    return text;
}
finally
{
    ocr.StopEngine();
}

// After:IronOCR(1 line)
return new IronTesseract().Read(imagePath).Text;
' Before: Asprise lifecycle (15 lines, manual cleanup)
Ocr.SetUp()
Dim ocr As New Ocr()
Try
    ocr.StartEngine("eng", Ocr.SPEED_FAST)
    Dim text As String = ocr.Recognize( _
        imagePath, _
        Ocr.RECOGNIZE_TYPE_TEXT, _
        Ocr.OUTPUT_FORMAT_PLAINTEXT)
    Return text
Finally
    ocr.StopEngine()
End Try

' After: IronOCR (1 line)
Return New IronTesseract().Read(imagePath).Text
$vbLabelText   $csharpLabel

여러 문서를 순차적으로 처리하는 성능 민감 코드의 경우, 호출당 새 인스턴스를 생성하는 대신 IronTesseract 인스턴스를 재사용하세요 — 엔진 초기화는 오버헤드를 동반하며, 순차적으로 사용하는 단일 인스턴스가 문서당 생성 및 폐기보다 더 효율적입니다.

문자열 기반 언어 코드 대체

Asprise는 언어 선택을 위해 문자열 매개변수를 사용합니다 ("eng", "fra", "eng+fra"). IronOCR은 부가적인 언어 API가 있는 강력한 타입의 OcrLanguage 열거형을 사용합니다. 다국어 지원 가이드 에서는 사용 가능한 언어 식별자와 각 식별자에 필요한 NuGet 패키지에 대해 설명합니다.

// Before: Asprise string-based language
ocr.StartEngine("eng+fra", Ocr.SPEED_FAST);

// After:IronOCR strongly-typed language enum
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
ocr.AddSecondaryLanguage(OcrLanguage.French);
var result = ocr.Read(imagePath);
// Before: Asprise string-based language
ocr.StartEngine("eng+fra", Ocr.SPEED_FAST);

// After:IronOCR strongly-typed language enum
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
ocr.AddSecondaryLanguage(OcrLanguage.French);
var result = ocr.Read(imagePath);
Imports IronOcr

' Before: Asprise string-based language
ocr.StartEngine("eng+fra", Ocr.SPEED_FAST)

' After: IronOCR strongly-typed language enum
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
ocr.AddSecondaryLanguage(OcrLanguage.French)
Dim result = ocr.Read(imagePath)
$vbLabelText   $csharpLabel

오류 문자열 검사 대체

Asprise는 인식에 실패할 경우 null 또는 오류 접두사가 붙은 문자열을 반환합니다.IronOcr.NET 예외가 발생합니다. 널 및 문자열 접두사 검사를 표준 try/catch 블록으로 교체하세요. 이렇게 하면 OCR 오류 처리가 .NET예외 처리 모델의 나머지 부분과 일치하게 되며, 구문 분석된 오류 문자열 대신 전체 스택 추적 및 예외 유형 계층 구조에 액세스할 수 있습니다.

병렬 처리 활성화

마이그레이션 후에는 기존 foreach 배치 루프를 어떠한 라이선스 문제 없이 Parallel.ForEach 또는 PLINQ로 변환할 수 있습니다. 이전에 Lite/STANDARD에서 순차적으로 처리되던 문서 배치의 경우, 병렬 처리는 처리량을 직접적으로 증대시키는 요소입니다. 비동기 OCR 가이드에서는 스레드 풀 포화 현상보다 비차단 OCR이 더 바람직한 웹 애플리케이션 환경에서 사용할 수 있는 비동기 패턴을 다룹니다.

IronOCR의 추가 기능

이 비교에서 다루는 영역 외에도, IronOCR은 Asprise에는 없는 다음과 같은 기능을 제공합니다:

  • OCR 중 바코드 읽기: 문서에서 텍스트 인식뿐만 아니라 바코드 및 QR 코드를 추출하려면 ocr.Configuration.ReadBarCodes = true을 활성화하세요 — 두 번째 라이브러리가 필요하지 않습니다.
  • 영역 기반 OCR: 특정 문서 영역에서 텍스트를 추출하려면 CropRectangle을 사용하세요, 이는 인보이스 헤더, 폼 필드, 구조화된 데이터 영역에 유용합니다.
  • 신뢰도 점수: WORD별 및 전체 인식 신뢰도 값을 확인하여 신뢰도가 낮은 추출 결과를 표시하고, 이를 사람이 검토할 수 있도록 합니다.
  • 구조화된 데이터 추출: 페이지, 단락, 줄, WORD 단위로 결과 객체를 탐색하며, 각 객체에는 픽셀 좌표가 포함되어 있어 단순한 텍스트 출력을 넘어 레이아웃을 고려한 문서 파싱이 가능합니다.
  • hOCR 내보내기: 인식 결과를 hOCR 형식으로 내보내 후속 문서 처리 도구와 연동할 수 있도록 합니다.
  • 전문 문서 인식: 일반적인 Tesseract 인식 기능을 뛰어넘는 여권, MICR 수표, 차량 번호판 및 필기체를 위한 전용 워크플로.
  • 진행 상황 추적: UI 피드백 및 모니터링을 위해 장시간 실행되는 배치 작업 중 진행 상황 이벤트를 구독합니다.

.NET호환성 및 미래 준비

IronOCR은 .NETFramework 4.6.1 이상, .NETCore 2.0 이상, 그리고 .NET5부터 .NET9 및 그 이후의 모든 버전을 포함하는 .NETStandard 2.0을 대상으로 합니다. 이 라이브러리는 .NET릴리스 주기에 맞춰 정기적으로 업데이트되며, Windows x64, Windows x86, Linuxx64, macOS, Docker, Azure App Service 및 AWS Lambda에서 테스트를 거쳤습니다. Asprise의 .NET호환성은 네이티브 바이너리 모델의 제약으로 인해 제한적입니다. 새로운 플랫폼 대상(ARM64, WASM)의 경우 Asprise Inc.에서 새로운 네이티브 빌드를 제공해야 하며, 자바 우선 출시 주기 때문에 .NET플랫폼 업데이트가 뒤처질 수 있습니다. 현재 .NET8 및 .NET9를 사용 중이며 2026년에 .NET10으로 전환할 계획인 팀을 위해, IronOCR의 관리형 NuGet 아키텍처는 네이티브 바이너리 문제 없이 간편한 호환성 경로를 제공합니다.

결론

Asprise OCR은 .NET래퍼가 포함된 자바 OCR 라이브러리입니다. Java의 유산은 우연이 아닙니다. 이는 배포 모델(플랫폼별 네이티브 DLL), API 스타일(정수 상수를 사용하는 C 스타일의 라이프사이클 메서드), 문서 언어(번역이 필요한 자바 예제), 스레딩 제한(라이선스 계약에 따른 LITE/STANDARD 싱글 스레드)을 정의합니다. 우연히 .NET프로젝트를 진행하게 된 자바 팀에게 있어, Asprise의 크로스 언어 포지셔닝은 일리가 있습니다. 프로덕션 시스템을 구축하는 .NET팀의 경우, 이러한 특성들 때문에 모든 단계에서 마찰이 발생합니다.

스레딩 제한 사항에 대해서는 특히 중점을 두어야 합니다. 제품을 평가하는 대다수의 팀을 아우르는 가장 저렴한 두 가지 Asprise 요금제에서는 멀티스레드 및 멀티프로세스 실행이 금지됩니다. 모든 ASP.NET Core 웹 API, 작업 큐가 있는 모든 Windows 서비스, 동시 트리거를 처리하는 모든 Azure 함수: 이들 모두는 표준 .NET생산 패턴이며, Asprise에서 ENTERPRISE 라이선스를 요구합니다. IronOCR의 $999 Lite 라이선스는 이들 모두를 제한 없이 커버합니다.

배포의 복잡성은 두 번째로 고려해야 할 실질적인 문제입니다. 데이터베이스 Docker 컨테이너, 리눅스 빌드, 또는 교차 플랫폼 CI/CD 파이프라인을 실행하는 팀은 Asprise로 플랫폼별 네이티브 바이너리를 관리해야 합니다. 이러한 실패는 — DllNotFoundException, BadImageFormatException — 빌드 시간에 아닌 대상 인프라에서 실행 시간에 발생합니다. IronOCR은 표준 NuGet 패키지 관리로 배포되며, 플랫폼별 바이너리는 내부적으로 패키지 선택 메커니즘이 처리합니다. 배포 방식은 단일 NuGet 참조입니다.

.NET 팀이 새 OCR 통합을 시작할 때 시작 지점은 명확합니다: 단 하나의 dotnet add package IronOcr, 한 줄의 라이선스 키 할당, 및 첫 번째 결과를 위한 new IronTesseract().Read("document.jpg").Text. 엔진 초기화 없음, 네이티브 바이너리 소스 분석 없음, 스레딩 라이선스 감사 없음.

참고해 주세요Asprise OCR, PDFSharp, Tesseract, 및 iText는 해당 소유자의 등록 상표입니다. 이 사이트는 Asprise, Google, empira Software GmbH, 또는 iText Group과 제휴, 승인, 후원되지 않았습니다. 모든 제품 이름, 로고 및 브랜드는 해당 소유자의 자산입니다. 비교는 정보 제공 목적으로만 사용되며, 작성 시점에 공개적으로 이용 가능한 정보를 반영합니다.

자주 묻는 질문

Asprise OCR SDK란 무엇인가요?

Asprise OCR SDK는 개발자와 기업이 이미지와 문서에서 텍스트를 추출하는 데 사용하는 OCR 솔루션입니다. 이 솔루션은 .NET 애플리케이션 개발용 IronOCR과 함께 평가된 여러 OCR 옵션 중 하나입니다.

IronOCR은 .NET 개발자용 Asprise OCR SDK와 어떻게 다른가요?

IronOCR은 IronTesseract를 핵심 엔진으로 사용하는 NuGet 네이티브 .NET OCR 라이브러리입니다. Asprise OCR SDK에 비해 배포가 간편하고(SDK 설치 프로그램 없음), 정액제 요금이 적용되며, COM 인터롭이나 클라우드 종속성이 없는 깔끔한 C# API를 제공합니다.

IronOCR이 Asprise OCR SDK보다 설정하기가 더 쉬운가요?

IronOCR은 단일 NuGet 패키지를 통해 설치됩니다. SDK 설치 프로그램, 복사할 라이선스 파일, 등록할 COM 구성 요소 또는 관리해야 할 별도의 런타임 바이너리가 없습니다. 전체 OCR 엔진이 패키지에 번들로 제공됩니다.

Asprise OCR SDK와 IronOCR 사이에는 어떤 정확도 차이가 있나요?

IronOCR은 표준 비즈니스 문서, 송장, 영수증, 스캔 양식에 대해 높은 인식 정확도를 달성합니다. 품질이 많이 저하된 문서나 일반적이지 않은 스크립트의 경우 정확도는 소스 품질에 따라 달라집니다. IronOCR에는 이미지 전처리 필터가 포함되어 있어 저품질 입력에 대한 인식률을 향상시킵니다.

IronOCR은 PDF 텍스트 추출을 지원하나요?

예. IronOCR은 한 번의 호출로 원본 PDF와 스캔한 PDF 이미지 모두에서 텍스트를 추출합니다. 또한 여러 페이지의 TIFF 파일, 이미지, 스트림도 지원합니다. 스캔한 PDF의 경우 OCR은 페이지별 결과 개체를 사용하여 페이지별로 적용됩니다.

Asprise OCR SDK 라이선싱은 IronOCR과 어떻게 다른가요?

IronOCR은 페이지당 또는 스캔당 요금이 없는 정액제 영구 라이선스를 사용합니다. 대량의 문서를 처리하는 조직은 문서 양에 관계없이 동일한 라이선스 비용을 지불합니다. 자세한 내용과 볼륨 가격은 IronOCR 라이선스 페이지에서 확인할 수 있습니다.

IronOCR 어떤 언어를 지원하나요?

IronOCR은 별도의 NuGet 언어 팩을 통해 127개 언어를 지원합니다. 언어를 추가하려면 '닷넷 추가 패키지 IronOcr.Languages.{Language}' 명령 하나만 있으면 됩니다. 수동으로 파일을 배치하거나 경로를 구성할 필요가 없습니다.

.NET 프로젝트에 IronOCR 설치하는 방법은 무엇인가요?

NuGet을 통해 설치합니다: 패키지 관리자 콘솔에서 '설치-패키지 IronOcr' 또는 CLI에서 '닷넷 추가 패키지 IronOcr'을 실행합니다. 추가 언어 팩도 같은 방법으로 설치됩니다. 기본 SDK 인스톨러가 필요하지 않습니다.

IronOCR은 Asprise OCR과 달리 Docker 및 컨테이너화된 배포에 적합하나요?

예. IronOCR은 NuGet 패키지를 통해 Docker 컨테이너에서 작동합니다. 라이선스 키는 환경 변수를 통해 설정됩니다. OCR 엔진 자체에는 라이선스 파일, SDK 경로 또는 볼륨 마운트가 필요하지 않습니다.

Asprise OCR과 비교하여 구매하기 전에 IronOCR을 사용해 볼 수 있나요?

예. IronOCR 평가판 모드는 문서를 처리하고 출력물에 워터마크 오버레이가 포함된 OCR 결과를 반환합니다. 라이선스를 구매하기 전에 자신의 문서에서 정확성을 확인할 수 있습니다.

IronOCR은 텍스트 추출과 함께 바코드 판독을 지원하나요?

IronOCR은 텍스트 추출과 OCR에 중점을 둡니다. 바코드 판독을 위해 Iron Software는 동반 라이브러리로 IronBarcode를 제공합니다. 두 가지 모두 개별적으로 또는 Iron Suite 번들의 일부로 사용할 수 있습니다.

Asprise OCR SDK에서 IronOCR로 쉽게 마이그레이션할 수 있나요?

Asprise OCR SDK에서 IronOCR로 마이그레이션하려면 일반적으로 초기화 시퀀스를 IronTesseract 인스턴스화로 대체하고, COM 수명 주기 관리를 제거하며, API 호출을 업데이트해야 합니다. 대부분의 마이그레이션은 코드 복잡성을 크게 줄여줍니다.

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

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해