어떻게 청구서 라인 항목과 구조 된 테이블을 추출

어떻게 청구서 라인 항목과 구조 된 테이블을 추출

청구서에서 라인 항목과 테이블을 추출하는 것은 지불 계좌의 완전한 자동화, 감사 및 지출 분석의 핵심입니다. .NET에 대한 Aspose.OCR 인증서 텍스트는 스캔 또는 촬영 된 문서에서도 상세한, 멀티 로, 다열 데이터를 분류 할 수 있습니다.

현실 세계 문제

청구서에는 제품/서비스의 테이블이 포함되어 있으며, 수동으로 번역하는 것은 시간이 소요되고 오류가 발생합니다.완전한 자동화는 항목화된 세부 사항을 견고하게 추출해야 합니다.

솔루션 검토

OCR를 사용하여 테이블 지역을 인식하고 각 라인과 열을 분류하고 ERP, BI 또는 추가 분석을 위해 구조화된 형식으로 수출합니다.

원칙

  • Visual Studio 2019 또는 이후
  • .NET 6.0 또는 이후 (또는 .Net Framework 4.6.2+)
  • NuGet에서 .NET을 위한 ASPOSE.OCR
  • 샘플 청구서 이미지 또는 라인 항목 / 테이블을 가진 PDF
PM> Install-Package Aspose.OCR

단계별 실행

단계 1 : 청구서 이미지/PDF 준비

string invoiceFile = "invoice_with_items.pdf";

단계 2: 테이블 / 라인 항목 지역을 인식

using Aspose.OCR;
InvoiceRecognitionSettings settings = new InvoiceRecognitionSettings();
settings.Language = Language.English;
AsposeOcr ocr = new AsposeOcr();
OcrInput input = new OcrInput(InputType.PDF);
input.Add(invoiceFile);
List<RecognitionResult> results = ocr.RecognizeInvoice(input, settings);
string fullText = results[0].RecognitionText;

단계 3 : 테이블 라인 / 열에 인식 된 텍스트를 분할

  • regex 또는 사용자 지정 논리를 사용하여 라인 항목을 줄 / 열 측정기로 분할합니다.
// Example: Split into lines, then columns (simplified)
string[] lines = fullText.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var line in lines)
{
    if (Regex.IsMatch(line, @"\d+\s+[A-Za-z].*\s+\d+[.,]\d{2}")) // crude line item match
    {
        string[] columns = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
        // Map columns: SKU, description, qty, price, total, etc.
    }
}

단계 4: CSV에 수출 라인 항목 / 테이블

using (var writer = new StreamWriter("invoice_lineitems.csv"))
{
    writer.WriteLine("SKU,Description,Qty,UnitPrice,Total");
    // Loop and write line items parsed above
}

단계 5 : 완전한 예제

using Aspose.OCR;
using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        string invoiceFile = "invoice_with_items.pdf";
        InvoiceRecognitionSettings settings = new InvoiceRecognitionSettings();
        settings.Language = Language.English;
        AsposeOcr ocr = new AsposeOcr();
        OcrInput input = new OcrInput(InputType.PDF);
        input.Add(invoiceFile);
        List<RecognitionResult> results = ocr.RecognizeInvoice(input, settings);
        string fullText = results[0].RecognitionText;
        var lineItems = new List<string[]>();
        string[] lines = fullText.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
        foreach (var line in lines)
        {
            if (Regex.IsMatch(line, @"\d+\s+[A-Za-z].*\s+\d+[.,]\d{2}"))
                lineItems.Add(line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries));
        }
        using (var writer = new StreamWriter("invoice_lineitems.csv"))
        {
            writer.WriteLine("SKU,Description,Qty,UnitPrice,Total");
            foreach (var item in lineItems)
                writer.WriteLine(string.Join(",", item));
        }
    }
}

사례 및 응용 프로그램 사용

지출 분석 및 AP 자동화

추출은 보고, 예측 및 승인에 대한 지정된 지출입니다.

청구서 통계 및 검토

스트리밍 라인 검토 / 승인, 수출 가능, 기계 읽을 수 있는 세부 사항.

ERP / 금융 시스템 통합

구조화된 테이블 데이터를 금융 또는 ERP 소프트웨어에 직접 업로드합니다.

일반적인 도전과 해결책

도전 1 : 다양한 테이블 형식

** 솔루션:** 각 공급자 / 템플릿에 대한 레지크스 및 파싱 논리를 사용합니다.

도전 2 : OCR 인식 오류 열

솔루션: 열 히어리스틱을 사용하고, 높은 품질의 스캔을 요청하거나, 수동 검토를 위해 깃발을 사용할 수 있습니다.

도전 3 : 잃어버린 또는 사라진 열

** 해결책:** 양심적인 경우에 정상화, 분할 또는 즉각적인 검토.

성과 고려 사항

  • Batch는 동시에 여러 계좌를 처리합니다.
  • Log/flag parsing 문제 인간 검토

모범 사례

  • 알려진 템플릿을위한 레지크스 도서관을 구축
  • 검토 샘플 출력 Tune Parsing
  • 안전한 원본 / 처리된 파일 검토
  • 공급자 / 템플릿 변경으로 추출 논리를 업데이트

고급 시나리오

시나리오 1 : 지도 라인 항목을 ERP/데이터베이스로 직접

ORM 또는 API 통화를 사용하여 추출된 테이블 데이터를 밀어 넣습니다.

시나리오 2 : 다중 페이지 테이블 처리

논리를 확장하여 PDF/image 페이지 간격을 통과합니다.

결론

Aspose.OCR Invoice to Text for .NET은 세부 사항과 테이블을 추출하여 스캔/사진에서 구조화되고 실행 가능한 데이터에 대한 완전한 자동화를 가능하게 합니다.

더 많은 구조화 된 추출 코드를 볼 수 있습니다 .NET API 참조를 위한 ASPOSE.OCR .

 한국어