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

MODI OCR C# vs. IronOCR: C#에서 올바른 광학 문자 인식 라이브러리 선택하기

Microsoft Office Document Imaging (MODI)는 MS Office 2003 및 2007에 번들로 제공된 OCR 구성 요소였으며, 개발자가 COM 기반 객체 모델을 통해 스캔한 이미지에서 직접 텍스트를 추출할 수 있게 했습니다. 수년 동안 MODI.Document 클래스는 많은 문서 디지털화 프로젝트를 지원하며, TIFF 및 BMP 이미지 파일을 Visual Studio 솔루션에서 기계 판독 가능한 텍스트로 변환했습니다.

그러나 MODI의 이야기는 큰 단점이 있습니다: Microsoft는 2010년 및 이후 버전의 Office에서 이를 제거하여 개발자가 바래진 Office 설치나 독립 실행형 설치 도구에 의존하여 OCR 기능을 유지해야 했습니다. 크로스 플랫폼 배포, 클라우드 환경 또는 최근 Windows 버전을 대상으로 하는 현대적인 .NET 프로젝트에서는 MODI가 심각한 마찰을 일으킵니다.

이 기사는 코드 구현, 기능, 플랫폼 지원 및 라이선스를 통해MODI OCRC#이 IronOCR, 목적으로 구축된 .NET 광학 문자 인식 라이브러리와 어떻게 비교되는지 살펴봅니다. 기존 코드를 유지하거나 새 프로젝트를 시작하든, 여기서 제공되는 세부 정보는 올바른 선택을 하는 데 도움이 될 것입니다.

IronOCR을 무료로 30일 동안 사용해 보십시오 아래의 코드 예제를 따라가며.

비교가 걷잡을 수 없이 분열되는 방식은 무엇입니까?

카테고리 MODI OCR IronOCR
핵심 아키텍처 COM Interop; Microsoft Office Document Imaging DLL 참조가 필요함 순수 .NET 라이브러리; C#에 최적화된 Tesseract 5 엔진
플랫폼 지원 Windows 전용; 컴퓨터에 Office 2003/2007 설치 필요 Windows, Linux, macOS, Azure, Docker, iOS, Android
이미지 형식 TIFF, MDI, BMP TIFF, PNG, JPEG, BMP, GIF, PDF, 다중 페이지 이미지
언어 지원 ~22개의 miLANG 매개변수를 통한 언어 NuGet 언어 팩을 통한 125개 이상의 언어
OCR 정확도 깨끗한 표준 글꼴 문서에서 높음 99.8%+의 자동 이미지 보정 필터 사용
출력 옵션 Layout 객체로부터의 일반 텍스트 일반 텍스트, 검색 가능한 PDF, 구조화된 데이터 (페이지, 줄, 단어, 바코드)
설치 오피스 설치 프로그램 + 솔루션 탐색기의 COM 참조 NuGet 패키지: Install-Package IronOcr
활발한 개발 Office 2007 이후 중단됨 정기적인 업데이트로 적극적으로 유지 관리됨
라이센스 적격한 Microsoft Office 라이선스 필요 영구 라이선스는 $749부터; 무료 30일 체험판
지원 커뮤니티 포럼만 이메일, 라이브 채팅 및 전화기를 통한 직접 엔지니어링 지원

How Does Microsoft Office Document Imaging Perform OCR in C#?

MODI는 COM 기반 개체 모델을 통해 광학 문자 인식을 수행합니다. 이 프로세스는 MODI.Document 객체를 생성하고 이미지 파일 경로를 로드한 다음 OCR 메서드를 호출하여 이미지를 분석하고 문자를 식별하는 것으로 시작됩니다. OCR 프로세스가 완료되면 텍스트 및 레이아웃 정보는 각 페이지의 Image 및 Layout 객체를 통해 액세스할 수 있습니다.

Visual Studio 프로젝트에서 MODI를 사용하려면 Microsoft Office Document Imaging Type Library에 대한 참조를 추가해야 합니다. 솔루션 탐색기에서 References 폴더를 마우스 오른쪽 버튼으로 클릭하고 COM 탭을 선택한 다음 적절한 MODI 버전(Office 2003의 경우 11.0 또는 Office 2007의 경우 12.0)을 선택합니다.

// MODI OCR: Extracting text from a scanned TIFF document
private string ExtractTextFromImage(string path)
{
    string extractedText = "";
    MODI.Document doc = new MODI.Document();
    try
    {
        // Create the document object from the image file path
        doc.Create(path);
        // Run optical character recognition with English language
        doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
        // Access the first page image and retrieve recognized text
        MODI.Image modiImage = (MODI.Image)doc.Images[0];
        extractedText = modiImage.Layout.Text;
    }
    catch (Exception ex)
    {
        // Handle OCR exceptions for unsupported or corrupted image files
        string message = ex.Message;
        Console.WriteLine(message);
    }
    finally
    {
        doc.Close(false);
        System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);
    }
    return extractedText;
}
// MODI OCR: Extracting text from a scanned TIFF document
private string ExtractTextFromImage(string path)
{
    string extractedText = "";
    MODI.Document doc = new MODI.Document();
    try
    {
        // Create the document object from the image file path
        doc.Create(path);
        // Run optical character recognition with English language
        doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
        // Access the first page image and retrieve recognized text
        MODI.Image modiImage = (MODI.Image)doc.Images[0];
        extractedText = modiImage.Layout.Text;
    }
    catch (Exception ex)
    {
        // Handle OCR exceptions for unsupported or corrupted image files
        string message = ex.Message;
        Console.WriteLine(message);
    }
    finally
    {
        doc.Close(false);
        System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);
    }
    return extractedText;
}
$vbLabelText   $csharpLabel

이 함수는 표준 MODI 워크플로를 보여줍니다: Create 메서드는 파일을 로드하고, OCR 메서드는 지정된 언어를 사용하여 인식을 수행하며, Layout.Text는 추출된 문자열을 제공합니다. 반환된 extractedText 문은 호출자에게 출력을 제공합니다.

MODI는 선명하고 고해상도 문서 이미지에 대해 뛰어난 정확성을 제공하지만 주목할 만한 제약이 있습니다. TIFF, MDI 및 BMP 형식만 지원합니다. 애플리케이션을 실행하는 모든 컴퓨터, 프로덕션 서버를 포함하여 Microsoft Office 설치가 필요합니다. 낮은 품질의 이미지를 스캔하거나 왜곡을 수정하거나 디지털 노이즈를 감소시키는 내장 지원이 없습니다. 또한, MODI는 COM Interop에 의존하므로 .NET Core, .NET 5+, 또는 크로스 플랫폼 시나리오에서 사용할 수 없으므로 Docker 컨테이너나 Azure App Services와 같은 현대적 배포 대상에 적합하지 않습니다.

현대적인 .NET 라이브러리가 OCR 기능을 처리하는 방법은?

IronOCR는 COM Interop 접근을 순수 .NET API로 대체하며, 단일 NuGet 패키지를 통해 설치됩니다. IronTesseract 클래스는 크게 최적화된 Tesseract 5 엔진을 포장하고, OcrInput 클래스는 이미지 로딩, 전처리 및 다중 형식 지원을 처리하며, 대상 컴퓨터에 Microsoft Office나 외부 종속성을 요구하지 않습니다.

using IronOcr;
// Create the IronTesseract OCR engine object
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load images in any common format — PNG, JPEG, TIFF, BMP, GIF, or PDF
input.LoadImage("scanned-document.tiff");
// Apply filters to correct low-quality scans automatically
input.Deskew();   // Straighten skewed page images
input.DeNoise();  // Remove digital noise from scanning artifacts
// Read text from the processed document
var result = ocr.Read(input);
// Output plain text
Console.WriteLine(result.Text);
// Save as a searchable PDF for document management system integration
result.SaveAsSearchablePdf("output-searchable.pdf");
using IronOcr;
// Create the IronTesseract OCR engine object
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load images in any common format — PNG, JPEG, TIFF, BMP, GIF, or PDF
input.LoadImage("scanned-document.tiff");
// Apply filters to correct low-quality scans automatically
input.Deskew();   // Straighten skewed page images
input.DeNoise();  // Remove digital noise from scanning artifacts
// Read text from the processed document
var result = ocr.Read(input);
// Output plain text
Console.WriteLine(result.Text);
// Save as a searchable PDF for document management system integration
result.SaveAsSearchablePdf("output-searchable.pdf");
$vbLabelText   $csharpLabel

IronOCR출력

MODI OCR C# vs. IronOCR: C#에서 올바른 광학 문자 인식 라이브러리 선택하기: Image 1 -IronOCR예제 출력

위의 코드는 IronOCR이 몇 줄만으로 완전한 OCR 파이프라인을 통해 TIFF 스캔을 처리하는 방법을 보여줍니다. OcrInput 객체는 거의 모든 이미지 파일 또는 PDF 문서를 허용하고, Deskew() 및 DeNoise()는 MODI가 나쁜 결과를 생성할 수 있는 일반적인 스캔 인공물을 수정합니다. Read 메서드는 페이지, 단락, 줄 및 단어별로 구조화된 데이터가 포함된 OcrResult 객체를 반환하며, 각각 신뢰도 점수와 좌표 정보를 포함합니다.

송장, 양식 또는 다중 페이지 TIFF 파일을 처리하는 프로젝트의 경우, IronOCR도 텍스트 영역을 자동으로 찾고 바코드 및 QR 코드 판독을 동일한 패스로 수행하며 125개 이상의 언어를 NuGet 패키지로 설치할 수 있는 컴퓨터 비전 기능을 포함합니다.

이미지에서 텍스트를 추출할 때의 주요 차이점은 무엇입니까?

이 두 옵션 간의 실제 격차는 '완벽한' 샘플 파일을 사용하지 않을 때, 즉 실제 문서를 다루기 시작할 때 나타납니다. 우리는 커피 얼룩, 기울어진 페이지 또는 스마트폰에서 찍은 저해상도 사진과 같은 지저분한 스캔에 대해 이야기하고 있습니다.

MODI는 다른 시대를 위해, 특히 깨끗하고 고대비의 사무용 문서를 위해 설계되었습니다. 고급 스캐너에서 가져온 선명한 TIFF 파일이 있을 경우, 괜찮을 것입니다. 그러나 이미지가 살짝 회전되었거나 약간의 디지털 '노이즈'가 있는 경우 MODI의 정확성은 급격히 떨어집니다. 이 문제를 자동으로 해결해줄 필터가 내장되어 있지 않기 때문에, OCR 프로세스를 시작하기 전에 GDI+나 System.Drawing과 같은 두 번째 라이브러리를 사용하여 이미지를 사전 처리해야 합니다. 또한 메모리 관리가 다소 번거롭습니다; 만약 Marshal.ReleaseComObject를 수동으로 호출하지 않으면 프로덕션에서 메모리 누수가 발생할 가능성이 높습니다.

IronOCR는 이러한 작업을 처음부터 처리해줍니다. 이미지를 정리하기 위해 사용자 정의 코드를 작성하는 대신, input.Deskew() 또는 input.DeNoise()를 호출하기만 하면 됩니다. 이 필터는 엔진이 99.8% 정확성을 달성할 수 있도록 이미지를 준비하며, '지저분한' 문서에서도 가능합니다.

프로 팁: MODI에서 마이그레이션하는 경우, 코드를 교체할 때 레이아웃 데이터를 활용하십시오. 대부분 텍스트의 '덩어리'를 제공하는 MODI와 달리, IronOCR는 신뢰도 점수와 함께 단락과 줄별로 구성합니다. 이는 자동 송장 처리기를 구축하고 있으며, 확인을 위해 인간의 눈이 필요한 문서를 표시해야 하는 경우 생명의 은인입니다.

IronOCR는 다중 페이지 TIFF 및 PDF를 단일 객체로 처리함을 아는 것도 중요합니다. 이전 MODI.Images 컬렉션에서 이미지들을 수동으로 반복할 필요가 없습니다. 단순히 더 빠르고, 더 깔끔하며, 솔직히 더 견고합니다.

개발자가 기존 접근 방식에서 어떻게 마이그레이션할 수 있습니까?

기존 프로젝트에서 MODI를 교체하는 것은 간단합니다. 핵심 마이그레이션은 COM 참조를 NuGet 패키지로 교체하고 OCR 메서드 호출을 업데이트하는 것을 포함합니다. 다음은 MODI 패턴이 현대식 등가물로 변환되는 방법입니다:

using IronOcr;
// Replace: MODI.Document doc = new MODI.Document();
var ocr = new IronTesseract();
// Replace: doc.Create(filePath); with OcrInput
using var input = new OcrInput();
input.LoadImage("document.tiff");  // Accepts the same TIFF files MODI used
// Replace: doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
ocr.Language = OcrLanguage.English;
// Replace: modiImage.Layout.Text
var result = ocr.Read(input);
string text = result.Text;
Console.WriteLine(text);
using IronOcr;
// Replace: MODI.Document doc = new MODI.Document();
var ocr = new IronTesseract();
// Replace: doc.Create(filePath); with OcrInput
using var input = new OcrInput();
input.LoadImage("document.tiff");  // Accepts the same TIFF files MODI used
// Replace: doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
ocr.Language = OcrLanguage.English;
// Replace: modiImage.Layout.Text
var result = ocr.Read(input);
string text = result.Text;
Console.WriteLine(text);
$vbLabelText   $csharpLabel

매핑은 거의 일대일입니다: MODI.Document.Create는 OcrInput.LoadImage로, 언어 매개변수가 있는 OCR 메서드는 ocr.Language와 ocr.Read로, 그리고 Layout.Text는 result.Text로 바뀝니다. COM 참조 없음, Office 종속성 없음, 메모리를 수동으로 관리하기 위한 Marshal.ReleaseComObject 없음.

직접적인 교체를 넘어서, 마이그레이션은 MODI에는 존재하지 않는 기능도 제공합니다: Linux 및 macOS에 대한 크로스 플랫폼 배포, 클라우드 및 컨테이너 배포, 검색 가능한 PDF 출력, 사용자 지정 글꼴 훈련 기능이 있는 완전한 Tesseract 5 엔진.

어느 솔루션이 현대적인 OCR 필요에 가장 적합합니까?

MODI는 Microsoft Office가 모든 Windows 컴퓨터에 표준적으로 설치되었을 때 그 역할을 다했습니다. 이미 Office 2003 또는 2007에 의존하는 레거시 시스템을 유지하는 팀에게는 여전히 작동할 수 있지만, 지원이 중단된 소프트웨어에 대한 취약한 종속성을 나타내며 앞으로 나아갈 길이 없습니다.

새 프로젝트나 현대화 직면의 레거시 시스템에게는 IronOCR이 완전하고 적극적으로 유지되는 솔루션을 제공합니다. Office 종속성을 완전히 제거하고, 모든 주요 플랫폼에서 실행하며, 구식 접근법이 멈출 수 있는 저품질 이미지를 처리하고, 일반 텍스트를 넘어선 구조화된 OCR 출력을 제공합니다. 광범위한 문서, 직접적인 엔지니어링 지원, $749부터 시작하는 영구 라이센스로 대규모 문서 처리 생산을 위한 구조를 제공합니다.

지금 바로 IronOCR으로 시작하세요.
green arrow pointer

생산에 OCR을 배포할 준비가 되셨습니까? IronOCR 라이센스 옵션을 탐색하여 팀에 가장 적합한 옵션을 찾으세요.

칸나오팟 우돈판트
소프트웨어 엔지니어
카나팟은 소프트웨어 엔지니어가 되기 전 일본 홋카이도 대학교에서 환경 자원학 박사 학위를 취득했습니다. 학위 과정 중에는 생물생산공학과 소속 차량 로봇 연구실에서 활동하기도 했습니다. 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