IRONOCR 사용 송장 OCR API (개발자 튜토리얼) 칸나팟 우돈판트 업데이트됨:1월 19, 2026 다운로드 IronOCR NuGet 다운로드 DLL 다운로드 윈도우 설치 프로그램 무료 체험 시작하기 LLM용 사본 LLM용 사본 LLM용 마크다운 형식으로 페이지를 복사하세요 ChatGPT에서 열기 ChatGPT에 이 페이지에 대해 문의하세요 제미니에서 열기 제미니에게 이 페이지에 대해 문의하세요 Grok에서 열기 Grok에게 이 페이지에 대해 문의하세요 혼란 속에서 열기 Perplexity에게 이 페이지에 대해 문의하세요 공유하다 페이스북에 공유하기 트위터에 공유하기 LinkedIn에 공유하기 URL 복사 이메일로 기사 보내기 인보이스 OCR API는 머신 러닝을 사용하여 인보이스 데이터 추출을 자동화하여 수동 입력 오류를 제거하면서 디지털 및 스캔 문서 양쪽에서 공급업체 세부 정보, 인보이스 번호 및 가격을 정확하게 캡처합니다. 이 튜토리얼에서는 IronOCR과 인보이스 OCR 솔루션을 구축하는 방법을 설명합니다. 기계 학습 및 컴퓨터 비전을 활용하여 인보이스 OCR 기술은 인보이스 데이터를 자동 처리에 적합한 형식으로 변환합니다. 수동 데이터 입력 지연, 비용 및 오류와 같은 일반적인 문제를 해결하는 방법을 배우고 모든 인보이스 형식에서 공급업체 정보, 인보이스 번호 및 가격을 정확하게 추출합니다. 이 기사에서는 .NET 개발자에게 가장 널리 사용되는 인보이스 OCR API인 IronOCR를 사용합니다. ## 인보이스 OCR API 생성 방법 인보이스 OCR API 다운로드 및 설치 Visual Studio에서 새 C# 프로젝트를 만들거나 기존 프로젝트를 엽니다. Load an existing image file using ``OcrInput`` method `Ocr.Read` 메서드를 사용하여 이미지에서 텍스트를 추출합니다. Print the extracted text in Console using `Console.`WriteLine`` IronOCR이란 무엇입니까? Iron Software에서 개발한 IronOCR은 개발자를 위한 포괄적인 OCR 도구를 제공합니다. 머신 러닝 및 컴퓨터 비전을 사용하여 스캔된 문서, 이미지 및 PDF에서 텍스트를 추출하여 자동 처리를 가능하게 합니다. 여러 언어 및 플랫폼과 원활하게 통합되는 API는 수동 데이터 입력 오류를 줄이고 효율성을 개선합니다. 추출된 데이터는 분석 및 의사 결정에 직접적으로 기존 시스템으로 흐릅니다. 이미지 전처리, 바코드 인식 및 유연한 파일 파싱과 같은 기능은 다재다능성을 향상시킵니다. IronOCR은 개발자가 강력한 텍스트 인식을 응용 프로그램에 포함할 수 있도록 지원합니다. 라이브러리는 특수화된 언어 팩을 통해 125개의 국제 언어를 지원하여 글로벌 인보이스 처리에 이상적입니다. 고급 기능에는 특히 다양한 레이아웃의 인보이스에 유용한 컴퓨터 비전을 통한 자동 텍스트 찾기가 포함됩니다. 또한, IronOCR은 대량 인보이스 처리를 효율적으로 처리하기 위한 다중 스레드 처리 기능을 제공합니다. 인보이스 처리를 위해 IronOCR을 사용해야 하는 이유는 무엇인가요? IronOCR는 청구서 처리 애플리케이션에 매력적인 장점을 제공합니다. 첫째, .NET 애플리케이션을 위해 특별히 개선된 Tesseract 5 엔진을 통해 탁월한 정확성을 제공합니다. 이 라이브러리는 스캔된 문서에서 PDF 파일, 심지어 저품질 스캔에 이르기까지 다양한 청구서 형식을 처리합니다. 내장된 이미지 최적화 필터는 처리 전에 이미지 품질을 자동으로 향상시켜 더 정확한 텍스트 추출 결과를 제공합니다. 특정 요구사항이 있는 청구서의 경우, IronOCR는 사용자 정의 언어 학습을 지원하여 특정 서체나 형식에 해당하는 최적화가 가능합니다. IronOCR가 다른 OCR 라이브러리와 다른 점은 무엇인가요? IronOCR는 간단한 한 줄 OCR 기능을 제공하면서도 Enterprise 수준의 기능을 유지합니다. 원시 Tesseract 구현과 달리, IronOCR는 복잡한 작업을 원활하게 처리하는 관리형 .NET API를 제공합니다. 이 라이브러리는 전문 문서 읽기 방법을 제공하며, 청구서 라인 항목에 필수적인 문서 내 테이블 읽기에 대한 전용 지원을 포함합니다. 필터 마법사는 특정 청구서 이미지에 대한 최적의 전처리 설정을 자동으로 결정하여 최적화 추측을 없앱니다. IronOCR는 또한 포괄적인 디버깅 기능을 제공하여 개발자가 OCR 엔진이 무엇을 보는지 시각화하고 추출 문제를 효과적으로 해결할 수 있게 합니다. 필요한 사전 조건은 무엇인가요? IronOCR 작업을 시작하기 전에 이러한 전제조건이 충족되어 있는지 확인하세요: Visual Studio와 같은 IDE가 설치된 적절한 개발 환경 코드 예제를 효과적으로 이해하고 수정할 수 있는 C# 프로그래밍의 기본 이해 NuGet 패키지 관리자 또는 명령어 줄을 통해 프로젝트에 설치된 IronOCR 라이브러리 이 전제조건을 충족하면 IronOCR 작업을 성공적으로 시작할 준비가 됩니다. IronOCR는 Windows, Linux, macOS에 대한 포괄적인 설정 가이드를 제공합니다. 이 라이브러리는 AWS Lambda 및 Azure Functions를 위한 특정 튜토리얼과 함께 클라우드 배포를 지원합니다. 어떤 버전의 Visual Studio를 사용해야 하나요? IronOCR는 2017부터 최신 릴리스까지의 Visual Studio 버전을 지원합니다. 최적의 호환성과 최신 C# 기능을 사용하기 위해 Visual Studio 2019 또는 2022를 권장합니다. 이 라이브러리는 .NET Framework, .NET Core, .NET 5+와 완벽하게 호환되어 개발 환경의 유연성을 보장합니다. 크로스 플랫폼 개발의 경우, C# 확장을 사용하는 Visual Studio Code가 잘 작동합니다. 모바일 개발자는 IronOCR의 가이드를 통해 Android 및 iOS 구현을 활용하여 .NET MAUI 애플리케이션에 적합할 수 있습니다. 어떤 수준의 C# 지식이 필요합니까? 중급 C# 지식이면 기본 청구서 OCR 구현에 충분합니다. 편안하게 다룰 수 있어야 합니다: 객체 지향 프로그래밍 개념 스트림 및 파일 I/O 처리 기본 async/await 패턴 패턴 매칭을 위한 정규 표현식 강력한 오류 관리를 위한 예외 처리 IronOCR의 직관적인 API 설계로 인해 이미지 처리나 기계 학습에 대한 깊은 전문 지식이 필요하지 않습니다. 이 라이브러리는 내부적으로 복잡한 작업을 처리하여 비즈니스 로직에 집중할 수 있게 합니다. 간단한 OCR 예제로 초보자도 시작할 수 있습니다. 새로운 Visual Studio 프로젝트를 어떻게 만듭니까? IronOCR를 시작하려면 먼저 새로운 Visual Studio 프로젝트를 만드십시오. Visual Studio를 열고 파일로 이동하여 새로 만들기를 가리키고 프로젝트를 클릭합니다. 새로운 프로젝트 새 창에서 콘솔 애플리케이션을 선택하고 다음을 클릭합니다. 콘솔 응용 프로그램 새 창이 나타납니다. 프로젝트 이름과 위치를 입력한 후 다음을 클릭합니다. 프로젝트 구성 마지막으로 대상 프레임워크를 선택하고 만들기를 클릭합니다. 대상 프레임워크 새 Visual Studio 프로젝트가 준비되었습니다. 이제 IronOCR를 설치해 봅시다. OCR 애플리케이션에 가장 적합한 프로젝트 유형은 무엇입니까? 이 튜토리얼은 간결성을 위해 콘솔 애플리케이션을 사용하지만, IronOCR는 다양한 프로젝트 유형을 지원합니다. 콘솔 애플리케이션: 배치 처리 또는 명령줄 도구에 이상적 웹 애플리케이션: API 또는 웹 기반 서비스 구축에 적합 Windows Forms/WPF: GUI가 있는 데스크톱 애플리케이션에 적합 .NET MAUI 앱: 크로스 플랫폼 솔루션용 대량 처리의 경우, Windows 서비스 또는 마이크로서비스 아키텍처에 IronOCR를 구현하는 것을 고려하십시오. 라이브러리의 진행 추적 기능을 통해 장기 실행 작업의 모니터링이 용이합니다. 어떤 .NET Framework 버전을 목표로 해야 하나요? IronOCR는 .NET 버전 간 광범위한 호환성을 제공합니다. 새로운 프로젝트의 경우, 최적의 성능과 최신 기능을 위해 .NET 6.0 이상을 목표로 하십시오. 라이브러리는 우수한 하위 호환성을 유지합니다: .NET Framework 4.6.2+: 레거시 Enterprise 애플리케이션용 .NET Core 3.1: 안정적 배포를 위한 장기 지원 .NET 5.0+: 성능 개선이 있는 최신 프레임워크 .NET Standard 2.0: 플랫폼 간 최대 호환성 Docker 컨테이너에 배포할 때, .NET 6.0 이상은 더 작은 이미지 크기와 더 나은 성능을 제공합니다. Azure Functions의 경우, .NET 6.0과 .NET Framework 모두 지원됩니다. IronOCR를 어떻게 설치하나요? IronOCR를 다운로드하고 설치하는 두 가지 간단한 방법이 있습니다: Visual Studio NuGet 패키지 관리자 사용 Visual Studio 명령줄 사용 NuGet 패키지 관리자와 명령줄은 언제 사용해야 하나요? 작업 흐름에 따라 NuGet 패키지 관리자 GUI와 명령줄 중 선택하십시오: NuGet 패키지 관리자 GUI는 다음 상황에서 최적입니다: NuGet 패키지에 익숙하지 않은 경우 IronOCR 언어 팩을 탐색하려는 경우 시각적 확인을 선호하는 경우 여러 패키지를 관리하는 경우 명령줄 (패키지 관리자 콘솔)은 다음 상황에서 뛰어납니다: 명령 인터페이스에 익숙한 경우 스크립트 배포를 따르는 경우 특정 버전을 신속하게 필요로 하는 경우 고급 설치 옵션을 사용하는 경우 모든 방법은 동일한 결과를 얻으므로 편안함과 요구 사항에 따라 선택하십시오. 어떤 추가 언어 팩이 필요할까요? IronOCR는 전문 팩을 통해 125개의 국제 언어를 지원합니다. 인보이스 처리를 위해 고려하십시오: 비즈니스 특정 팩: 금융 문서를 위한 금융 언어 팩 지역 언어: 인보이스 출처에 따라 (스페인어, 프랑스어, 독일어) 다국어 지원: 여러 언어의 인보이스에 대해 맞춤 언어: 특수 폰트 또는 맞춤 트레이닝 데이터용 언어 팩은 주요 IronOCR 패키지와 함께 설치되어 비영어 텍스트에 대한 정확성을 크게 향상시킵니다. Visual Studio NuGet 패키지 관리자 사용 Visual Studio NuGet 패키지 관리자를 사용하여 C# 프로젝트에 IronOCR를 포함하십시오. 도구 > NuGet 패키지 관리자 > 솔루션용 NuGet 패키지 관리로 이동하십시오. NuGet 패키지 매니저 IronOCR를 검색하여 프로젝트에 패키지를 설치하십시오. NuGet 패키지 관리자 UI에서 IronOCR 패키지를 선택하십시오 동일한 방법으로 추가 언어 팩을 설치하십시오. Visual Studio 명령줄 사용 Visual Studio에서 도구 > NuGet 패키지 관리자 > 패키지 관리자 콘솔로 이동하세요. 패키지 관리자 콘솔에 이 명령을 입력하십시오: Install-Package IronOcr 패키지 관리자 콘솔 패키지가 현재 프로젝트에 다운로드 및 설치되어 사용 준비가 완료됩니다. IronOCR를 사용하여 송장에서 데이터를 어떻게 추출합니까? 몇 줄의 코드만으로 IronOCR를 사용하여 송장 데이터를 쉽게 추출합니다. 이것은 수작업 데이터를 입력하는 대신 워크플로를 간소화합니다. 다음은 텍스트 추출을 위한 예제 송장입니다: 샘플 송장 이 송장에서 모든 데이터를 추출해 봅시다: using IronOcr; using System; // Initialize a new instance of the IronTesseract class // This is the main OCR engine that will process our invoice var ocr = new IronTesseract(); // Configure OCR settings for better invoice processing ocr.Configuration.BlackListCharacters = "~`$#^*_}{]___PROTECTED_LINK_48___ method from ___PROTECTED_LINK_49___ class. Key enhancements include: - **Image preprocessing**: ___PROTECTED_LINK_50___ corrects tilted scans; ___PROTECTED_LINK_51___ removes artifacts - **Resolution enhancement**: Setting ___PROTECTED_LINK_52___ improves recognition - **Character blacklisting**: Prevents common OCR misinterpretations - **Confidence scoring**: Assesses extraction reliability !___PROTECTED_LINK_53___ **Invoice Parser** ### How Do I Handle Different Invoice Formats? Invoice formats vary between vendors, but IronOCR provides flexible solutions: 1. **Template-based**: Define ___PROTECTED_LINK_54___ 2. **Computer vision**: Use ___PROTECTED_LINK_55___ to locate text 3. **Table extraction**: Leverage ___PROTECTED_LINK_56___ for line items 4. **Multi-format**: Process ___PROTECTED_LINK_57___, ___PROTECTED_LINK_58___, and ___PROTECTED_LINK_59___ For complex layouts, implement the ___PROTECTED_LINK_60___ which uses machine learning to identify structures automatically. ### What Are Common Extraction Patterns for Invoice Data? Invoice data follows recognizable patterns extractable using regular expressions with OCR results: ```csharp using IronOcr; using System; using System.Text.`RegularExpressions`; using System.Collections.Generic; public class `InvoiceDataExtractor` { private readonly `IronTesseract` ocr; public `InvoiceDataExtractor`() { ocr = new `IronTesseract`(); // Configure for optimal invoice reading `ocr.Configuration`.`ReadBarcodes` = true; // Many invoices include barcodes `ocr.Configuration`.`TesseractVersion` = `TesseractVersion`.Tesseract5; } public `InvoiceData` `ExtractInvoiceData`(string imagePath) { var invoiceData = new `InvoiceData`(); using (var input = new `OcrInput`(imagePath)) { // Apply filters for better accuracy input.`EnhanceResolution`(300); `input.Sharpen`(); var result = `ocr.Read`(input); var text = `result.Text`; // Extract invoice number invoiceData.`InvoiceNumber` = `ExtractPattern`(text, @"INV[/-]?\d{4}[/-]?\d{5}|Invoice\s*#?\s*:?\s*(\d+)"); // Extract dates invoiceData.`InvoiceDate` = `ExtractDate`(text, @"Invoice\s*Date\s*:?\s*(\d{1,2}[/-]\d{1,2}[/-]\d{2,4})"); invoiceData.`DueDate` = `ExtractDate`(text, @"Due\s*Date\s*:?\s*(\d{1,2}[/-]\d{1,2}[/-]\d{2,4})"); // Extract amounts `invoiceData.Total` = `ExtractAmount`(text, @"Total\s*:?\s*\$?\s*([\d,]+\.?\d*)"); `invoiceData.Tax` = `ExtractAmount`(text, @"Tax\s*:?\s*\$?\s*([\d,]+\.?\d*)"); // Extract vendor information invoiceData.`VendorName` = `ExtractVendorName`(text); // Extract line items using table detection invoiceData.`LineItems` = `ExtractLineItems`(result); // Extract any barcodes found if (`result.Barcodes`.Length > 0) { invoiceData.`BarcodeValues` = new List<string>(); foreach (var barcode in `result.Barcodes`) { invoiceData.`BarcodeValues`.Add(`barcode.Value`); } } } return invoiceData; } private string `ExtractPattern`(string text, string pattern) { var match = Regex.Match(text, pattern, `RegexOptions`.`IgnoreCase`); return `match.Success` ? `match.Value` : `string.Empty`; } private `DateTime`? `ExtractDate`(string text, string pattern) { var match = Regex.Match(text, pattern, `RegexOptions`.`IgnoreCase`); if (`match.Success` && `match.Groups`.Count > 1) { if (`DateTime`.`TryParse`(`match.Groups`[1].Value, out `DateTime` date)) return date; } return null; } private decimal `ExtractAmount`(string text, string pattern) { var match = Regex.Match(text, pattern, `RegexOptions`.`IgnoreCase`); if (`match.Success` && `match.Groups`.Count > 1) { var amountStr = `match.Groups`[1].Value.Replace(",", ""); if (decimal.`TryParse`(amountStr, out decimal amount)) return amount; } return 0; } private string `ExtractVendorName`(string text) { // Usually the vendor name appears in the first few lines var lines = `text.Split`('\n'); if (`lines.Length` > 0) { // Simple heuristic: first non-empty line that's not a common header foreach (var line in lines) { var trimmed = `line.Trim`(); if (!string.`IsNullOrEmpty`(trimmed) && !trimmed.`ToLower`().Contains("invoice") && `trimmed.Length` > 3) { return trimmed; } } } return `string.Empty`; } private List<`LineItem`> `ExtractLineItems`(`OcrResult` result) { var lineItems = new List<`LineItem`>(); // Use IronOCR's table detection capabilities if (`result.Tables` != null && `result.Tables`.Count > 0) { foreach (var table in `result.Tables`) { // Process each row as a potential line item for (int i = 1; i < table.`RowCount`; i++) // Skip header row { var item = new `LineItem` { Description = table[i, 0]?.Text ?? "", Quantity = `ParseQuantity`(table[i, 1]?.Text), `UnitPrice` = `ParseAmount`(table[i, 2]?.Text), Total = `ParseAmount`(table[i, 3]?.Text) }; if (!string.`IsNullOrEmpty`(`item.Description`)) `lineItems.Add`(item); } } } return lineItems; } private int `ParseQuantity`(string text) { if (string.`IsNullOrEmpty`(text)) return 0; var cleaned = Regex.Replace(text, @"[^\d]", ""); return int.`TryParse`(cleaned, out int qty) ? qty : 0; } private decimal `ParseAmount`(string text) { if (string.`IsNullOrEmpty`(text)) return 0; var cleaned = Regex.Replace(text, @"[^\d.]", ""); return decimal.`TryParse`(cleaned, out decimal amt) ? amt : 0; } } // Data classes for structured invoice information public class `InvoiceData` { public string `InvoiceNumber` { get; set; } public `DateTime`? `InvoiceDate` { get; set; } public `DateTime`? `DueDate` { get; set; } public string `VendorName` { get; set; } public decimal Total { get; set; } public decimal Tax { get; set; } public List<`LineItem`> `LineItems` { get; set; } public List<string> `BarcodeValues` { get; set; } } public class `LineItem` { public string Description { get; set; } public int Quantity { get; set; } public decimal `UnitPrice` { get; set; } public decimal Total { get; set; } } using IronOcr; using System; // Initialize a new instance of the IronTesseract class // This is the main OCR engine that will process our invoice var ocr = new IronTesseract(); // Configure OCR settings for better invoice processing ocr.Configuration.BlackListCharacters = "~`$#^*_}{]___PROTECTED_LINK_48___ method from ___PROTECTED_LINK_49___ class. Key enhancements include: - **Image preprocessing**: ___PROTECTED_LINK_50___ corrects tilted scans; ___PROTECTED_LINK_51___ removes artifacts - **Resolution enhancement**: Setting ___PROTECTED_LINK_52___ improves recognition - **Character blacklisting**: Prevents common OCR misinterpretations - **Confidence scoring**: Assesses extraction reliability !___PROTECTED_LINK_53___ **Invoice Parser** ### How Do I Handle Different Invoice Formats? Invoice formats vary between vendors, but IronOCR provides flexible solutions: 1. **Template-based**: Define ___PROTECTED_LINK_54___ 2. **Computer vision**: Use ___PROTECTED_LINK_55___ to locate text 3. **Table extraction**: Leverage ___PROTECTED_LINK_56___ for line items 4. **Multi-format**: Process ___PROTECTED_LINK_57___, ___PROTECTED_LINK_58___, and ___PROTECTED_LINK_59___ For complex layouts, implement the ___PROTECTED_LINK_60___ which uses machine learning to identify structures automatically. ### What Are Common Extraction Patterns for Invoice Data? Invoice data follows recognizable patterns extractable using regular expressions with OCR results: ```csharp using IronOcr; using System; using System.Text.`RegularExpressions`; using System.Collections.Generic; public class `InvoiceDataExtractor` { private readonly `IronTesseract` ocr; public `InvoiceDataExtractor`() { ocr = new `IronTesseract`(); // Configure for optimal invoice reading `ocr.Configuration`.`ReadBarcodes` = true; // Many invoices include barcodes `ocr.Configuration`.`TesseractVersion` = `TesseractVersion`.Tesseract5; } public `InvoiceData` `ExtractInvoiceData`(string imagePath) { var invoiceData = new `InvoiceData`(); using (var input = new `OcrInput`(imagePath)) { // Apply filters for better accuracy input.`EnhanceResolution`(300); `input.Sharpen`(); var result = `ocr.Read`(input); var text = `result.Text`; // Extract invoice number invoiceData.`InvoiceNumber` = `ExtractPattern`(text, @"INV[/-]?\d{4}[/-]?\d{5}|Invoice\s*#?\s*:?\s*(\d+)"); // Extract dates invoiceData.`InvoiceDate` = `ExtractDate`(text, @"Invoice\s*Date\s*:?\s*(\d{1,2}[/-]\d{1,2}[/-]\d{2,4})"); invoiceData.`DueDate` = `ExtractDate`(text, @"Due\s*Date\s*:?\s*(\d{1,2}[/-]\d{1,2}[/-]\d{2,4})"); // Extract amounts `invoiceData.Total` = `ExtractAmount`(text, @"Total\s*:?\s*\$?\s*([\d,]+\.?\d*)"); `invoiceData.Tax` = `ExtractAmount`(text, @"Tax\s*:?\s*\$?\s*([\d,]+\.?\d*)"); // Extract vendor information invoiceData.`VendorName` = `ExtractVendorName`(text); // Extract line items using table detection invoiceData.`LineItems` = `ExtractLineItems`(result); // Extract any barcodes found if (`result.Barcodes`.Length > 0) { invoiceData.`BarcodeValues` = new List<string>(); foreach (var barcode in `result.Barcodes`) { invoiceData.`BarcodeValues`.Add(`barcode.Value`); } } } return invoiceData; } private string `ExtractPattern`(string text, string pattern) { var match = Regex.Match(text, pattern, `RegexOptions`.`IgnoreCase`); return `match.Success` ? `match.Value` : `string.Empty`; } private `DateTime`? `ExtractDate`(string text, string pattern) { var match = Regex.Match(text, pattern, `RegexOptions`.`IgnoreCase`); if (`match.Success` && `match.Groups`.Count > 1) { if (`DateTime`.`TryParse`(`match.Groups`[1].Value, out `DateTime` date)) return date; } return null; } private decimal `ExtractAmount`(string text, string pattern) { var match = Regex.Match(text, pattern, `RegexOptions`.`IgnoreCase`); if (`match.Success` && `match.Groups`.Count > 1) { var amountStr = `match.Groups`[1].Value.Replace(",", ""); if (decimal.`TryParse`(amountStr, out decimal amount)) return amount; } return 0; } private string `ExtractVendorName`(string text) { // Usually the vendor name appears in the first few lines var lines = `text.Split`('\n'); if (`lines.Length` > 0) { // Simple heuristic: first non-empty line that's not a common header foreach (var line in lines) { var trimmed = `line.Trim`(); if (!string.`IsNullOrEmpty`(trimmed) && !trimmed.`ToLower`().Contains("invoice") && `trimmed.Length` > 3) { return trimmed; } } } return `string.Empty`; } private List<`LineItem`> `ExtractLineItems`(`OcrResult` result) { var lineItems = new List<`LineItem`>(); // Use IronOCR's table detection capabilities if (`result.Tables` != null && `result.Tables`.Count > 0) { foreach (var table in `result.Tables`) { // Process each row as a potential line item for (int i = 1; i < table.`RowCount`; i++) // Skip header row { var item = new `LineItem` { Description = table[i, 0]?.Text ?? "", Quantity = `ParseQuantity`(table[i, 1]?.Text), `UnitPrice` = `ParseAmount`(table[i, 2]?.Text), Total = `ParseAmount`(table[i, 3]?.Text) }; if (!string.`IsNullOrEmpty`(`item.Description`)) `lineItems.Add`(item); } } } return lineItems; } private int `ParseQuantity`(string text) { if (string.`IsNullOrEmpty`(text)) return 0; var cleaned = Regex.Replace(text, @"[^\d]", ""); return int.`TryParse`(cleaned, out int qty) ? qty : 0; } private decimal `ParseAmount`(string text) { if (string.`IsNullOrEmpty`(text)) return 0; var cleaned = Regex.Replace(text, @"[^\d.]", ""); return decimal.`TryParse`(cleaned, out decimal amt) ? amt : 0; } } // Data classes for structured invoice information public class `InvoiceData` { public string `InvoiceNumber` { get; set; } public `DateTime`? `InvoiceDate` { get; set; } public `DateTime`? `DueDate` { get; set; } public string `VendorName` { get; set; } public decimal Total { get; set; } public decimal Tax { get; set; } public List<`LineItem`> `LineItems` { get; set; } public List<string> `BarcodeValues` { get; set; } } public class `LineItem` { public string Description { get; set; } public int Quantity { get; set; } public decimal `UnitPrice` { get; set; } public decimal Total { get; set; } } $vbLabelText $csharpLabel 송장 처리하여 송장에서 특정 데이터 추출하기 이 코드를 사용하여 고객 송장 번호와 같은 특정 송장 데이터를 추출하십시오: using IronOcr; using System; using System.Text.`RegularExpressions`; // Initialize a new instance of the `IronTesseract` class var ocr = new `IronTesseract`(); // Use the `OcrInput` object to load the image file using (var input = new `OcrInput`(@"`r2.png`")) { // Perform OCR on the image var result = `ocr.Read`(input); // Define a regular expression pattern for the invoice number var linePattern = @"INV\/\d{4}\/\d{5}"; // Match the pattern in the extracted text var lineMatch = Regex.Match(`result.Text`, linePattern); // Check if the pattern matches any part of the text if (`lineMatch.Success`) { // If a match is found, print the invoice number var lineValue = `lineMatch.Value`; Console.`WriteLine`("Customer Invoice number: " + lineValue); } } using IronOcr; using System; using System.Text.`RegularExpressions`; // Initialize a new instance of the `IronTesseract` class var ocr = new `IronTesseract`(); // Use the `OcrInput` object to load the image file using (var input = new `OcrInput`(@"`r2.png`")) { // Perform OCR on the image var result = `ocr.Read`(input); // Define a regular expression pattern for the invoice number var linePattern = @"INV\/\d{4}\/\d{5}"; // Match the pattern in the extracted text var lineMatch = Regex.Match(`result.Text`, linePattern); // Check if the pattern matches any part of the text if (`lineMatch.Success`) { // If a match is found, print the invoice number var lineValue = `lineMatch.Value`; Console.`WriteLine`("Customer Invoice number: " + lineValue); } } $vbLabelText $csharpLabel 송장 스캐닝 복잡한 추출 시나리오의 경우, 특수한 OCR 구성을 사용하여 송장 유형에 최적화하세요. OcrResult 클래스는 검증을 위한 좌표와 신뢰 점수를 포함한 각 인식 요소에 대한 세부 정보를 제공합니다. 송장 OCR API의 주요 이점은 무엇입니까? IronOCR의 송장 OCR API는 기계 학습과 컴퓨터 비전을 통해 송장 처리를 변환합니다. 이 기술은 송장 텍스트를 기계가 읽을 수 있는 형식으로 변환하여 분석, 통합 및 프로세스 개선을 위한 데이터 추출을 단순화합니다. 송장 처리에 대한 강력한 자동화를 제공하여 정확성을 향상시키고, 계정 결제와 같은 워크플로를 최적화합니다. IronOCR는 추가 구성 없이 최적화된 Tesseract 결과를 사용하여 뛰어난 정확성을 제공합니다. 다중 페이지 프레임 TIFF, PDF 파일 및 모든 인기 있는 이미지 형식을 지원합니다. 이미지에서 바코드 읽기가 또 다른 추출 차원을 추가합니다. 송장 처리의 주요 혜택: 시간 절약: 몇 시간에서 몇 초로 단축 정확도: 신뢰 점수로 오류 최소화 확장성: 다중 스레드로 수천 개 처리 통합: 검색 가능한 PDF 또는 구조화된 형식으로 내보내기 비용 절감: 운영 비용 절감 라이브러리의 배포 유연성은 기존 시스템에 온프레미스, 클라우드 또는 하이브리드 방식으로 통합할 수 있게 합니다. Docker, Azure, AWS 지원으로 IronOCR가 필요에 맞게 확장됩니다. 프로덕션 환경은 전용 지원과 정기 업데이트를 포함한 IronOCR의 라이센싱 옵션으로 혜택을 받습니다. 라이브러리의 문제 해결 가이드와 엔지니어링 지원을 통해 원활한 구현을 보장합니다. IronOCR에 대한 더 많은 정보를 보려면 홈페이지를 방문하세요. 추가 송장 OCR 튜토리얼은 상세한 송장 OCR 가이드를 참조하세요. 송장 필드를 위한 컴퓨터 비전 사용에 대해 알아보려면 컴퓨터 비전 튜토리얼을 확인하세요. 자주 묻는 질문 OCR을 사용하여 송장 데이터 처리를 자동화하려면 어떻게 해야 할까요? IronOCR 머신러닝 알고리즘을 활용하여 송장 데이터 처리를 자동화할 수 있습니다. IronOCR 디지털 및 스캔된 송장에서 공급업체 정보, 송장 번호, 가격과 같은 세부 정보를 추출하여 수동 입력 오류를 줄이고 효율성을 향상시킵니다. 송장 OCR API를 설정하는 데에는 어떤 단계가 포함되나요? IronOCR 사용하여 송장 OCR API를 설정하려면 먼저 Visual Studio의 NuGet 패키지 관리자를 통해 라이브러리를 다운로드하고 설치합니다. 그런 다음 새 C# 프로젝트를 만들고 IronOCR 통합한 후 해당 메서드를 사용하여 이미지 파일을 로드하고 읽어 텍스트를 추출합니다. IronOCR 송장 번호와 같은 특정 데이터를 추출할 수 있습니까? 네, IronOCR 송장 번호와 같은 특정 데이터를 추출할 수 있습니다. 추출된 텍스트에서 패턴을 일치시키기 위해 정규 표현식을 사용하므로 송장에서 특정 정보를 추출할 수 있습니다. IronOCR 의 기능 중 송장 처리에 도움이 되는 기능은 무엇인가요? IronOCR 이미지 전처리, 바코드 인식, 파일 분석 등의 기능이 포함되어 있습니다. 이러한 기능은 다양한 송장 형식에서 텍스트를 정확하게 추출하고 처리하는 능력을 향상시켜 데이터 수집 및 워크플로 효율성을 높입니다. 이미지 전처리가 OCR 결과 향상에 어떻게 도움이 될 수 있을까요? IronOCR 의 이미지 전처리 기능은 텍스트 추출 전에 이미지 품질을 최적화하여 OCR 결과를 향상시키는 데 도움을 줍니다. 여기에는 명암 조정 및 노이즈 감소와 같은 작업이 포함되며, 이를 통해 송장에서 더욱 정확한 데이터 추출이 가능해집니다. IronOCR 디지털 송장과 스캔한 송장 모두에 사용할 수 있습니까? 네, IronOCR 디지털 청구서와 스캔한 청구서 모두 처리할 수 있습니다. 다양한 형식과 이미지 품질에서 텍스트를 정확하게 추출하기 위해 고급 머신 러닝 및 컴퓨터 비전 기술을 사용합니다. IronOCR 다양한 페이지 형식과 파일 형식을 어떻게 처리하나요? IronOCR 다양한 페이지 형식과 널리 사용되는 이미지 및 PDF 파일 형식을 지원합니다. 복잡한 문서에서 효율적으로 텍스트를 추출할 수 있어 다양한 송장 처리 애플리케이션에 활용하기 좋습니다. 개발자는 IronOCR 사용법에 대한 튜토리얼을 어디에서 찾을 수 있나요? 개발자는 IronOCR 웹사이트에서 튜토리얼과 추가 자료를 찾아볼 수 있습니다. 이 사이트는 IronOCR 다양한 시나리오에 적용하는 방법을 안내하는 가이드와 블로그 게시물을 포함한 다양한 학습 자료를 제공합니다. 칸나팟 우돈판트 지금 바로 엔지니어링 팀과 채팅하세요 소프트웨어 엔지니어 카나팟은 소프트웨어 엔지니어가 되기 전 일본 홋카이도 대학교에서 환경 자원학 박사 학위를 취득했습니다. 학위 과정 중에는 생물생산공학과 소속 차량 로봇 연구실에서 활동하기도 했습니다. 2022년에는 C# 기술을 활용하여 Iron Software의 엔지니어링 팀에 합류했고, 현재 IronPDF 개발에 집중하고 있습니다. 카나팟은 IronPDF에 사용되는 대부분의 코드를 직접 작성하는 개발자로부터 배울 수 있다는 점에 만족하며, 동료들과의 소통을 통해 배우는 것 외에도 Iron Software에서 일하는 즐거움을 누리고 있습니다. 코딩이나 문서 작업을 하지 않을 때는 주로 PS5로 게임을 하거나 The Last of Us를 다시 시청하는 것을 즐깁니다. 관련 기사 게시됨 3월 8, 2026 실제로 유용한 데이터를 추출하는 영수증 OCR API를 C#에서 빌드합니다 IronOCR를 사용하여 C#에서 영수증 OCR API를 빌드합니다. 영수증 이미지에서 구조화된 데이터를 로컬에서 정확하게 추출하는 코드 예제를 포함한 단계별 튜토리얼입니다. 더 읽어보기 업데이트됨 3월 1, 2026 IronOCR 이용한 텍스트 인식 (C# GitHub ) IronOCR 사용하여 GitHub 프로젝트에 텍스트 인식 기능을 구현하는 C# GitHub 튜토리얼입니다. 코드 예제와 버전 관리 팁이 포함되어 있습니다. 더 읽어보기 업데이트됨 3월 1, 2026 .NET OCR SDK: C#용 텍스트 인식 라이브러리 IronOCR의 .NET SDK를 사용하여 강력한 OCR 솔루션을 구축하세요. 간편한 API, Enterprise급 기능, 그리고 다양한 플랫폼 지원을 통해 문서 처리 애플리케이션을 최적화할 수 있습니다. 더 읽어보기 송장 처리에 가장 적합한 OCR 소프트웨어 (최신 목록)Blazor 에서 이미지에서 텍...
게시됨 3월 8, 2026 실제로 유용한 데이터를 추출하는 영수증 OCR API를 C#에서 빌드합니다 IronOCR를 사용하여 C#에서 영수증 OCR API를 빌드합니다. 영수증 이미지에서 구조화된 데이터를 로컬에서 정확하게 추출하는 코드 예제를 포함한 단계별 튜토리얼입니다. 더 읽어보기
업데이트됨 3월 1, 2026 IronOCR 이용한 텍스트 인식 (C# GitHub ) IronOCR 사용하여 GitHub 프로젝트에 텍스트 인식 기능을 구현하는 C# GitHub 튜토리얼입니다. 코드 예제와 버전 관리 팁이 포함되어 있습니다. 더 읽어보기
업데이트됨 3월 1, 2026 .NET OCR SDK: C#용 텍스트 인식 라이브러리 IronOCR의 .NET SDK를 사용하여 강력한 OCR 솔루션을 구축하세요. 간편한 API, Enterprise급 기능, 그리고 다양한 플랫폼 지원을 통해 문서 처리 애플리케이션을 최적화할 수 있습니다. 더 읽어보기