# IronOCR를 사용하여 C#에서 바코드 및 QR 코드를 읽는 방법
IronOCR는 설정에서 `ReadBarCodes = true`을 설정하여 C#에서 바코드 및 QR 코드를 읽습니다. 이 단일 설정은 QR 코드, Code 128, Data Matrix를 포함하여 20개 이상의 바코드 형식을 지원하며, PDF 및 이미지에서 일반 텍스트 인식과 함께 바코드 값을 자동으로 추출할 수 있게 해줍니다.
*as-heading:2(빠른 시작: PDF에서 즉시 바코드 읽기)*
하나의 설정으로 바코드 감지를 활성화하고 IronOCR로 PDF를 스캔하십시오. 아래 코드에서는 바코드 읽기를 활성화하고, PDF를 처리하고, 해독된 값을 검색하는 방법을 보여줍니다.
```cs
:title=Try IronOCR's Barcode Reader Now
var result = new IronOcr.IronTesseract() { Configuration = new IronOcr.TesseractConfiguration { ReadBarCodes = true } }.Read(new IronOcr.OcrPdfInput("document.pdf"));
foreach(var bc in result.Barcodes) Console.WriteLine(bc.Value);
```
<div class="hsg-featured-snippet">
<h2>IronOCR를 사용하여 C#에서 바코드 및 QR 코드를 읽는 방법</h2>
<ol>
<li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://nuget.org/packages/IronOcr/">바코드 및 QR 코드를 읽기 위한 C# 라이브러리를 다운로드하십시오.</a></li>
<li>대상 이미지와 PDF 문서를 가져옵니다.</li>
<li><strong>ReadBarCodes</strong> 속성을 true로 설정하여 바코드 읽기를 활성화합니다.</li>
<li><code>Read</code> 메서드를 사용하여 일반적으로 OCR을 수행하십시오.</li>
<li>탐지된 텍스트 및 바코드 값을 출력합니다.</li>
</ol>
</div>
<br class="clear" />
## PDF 문서에서 바코드를 어떻게 읽나요?
읽기를 수행하기 위해 `IronTesseract` 객체를 생성하십시오. **`ReadBarCodes`** 속성을 true로 설정하여 바코드 감지를 활성화하십시오. [`OcrPdfInput`](https://ironsoftware.com/csharp/ocr/how-to/input-pdfs/) 생성자를 사용하여 PDF 문서를 가져옵니다. 가져온 PDF에서 OCR을 수행하기 위해 `Read` 메서드를 사용하십시오.
다음은 이 PDF 문서를 사용하는 예입니다:
<iframe loading="lazy" src="/static-assets/ocr/how-to/barcodes/pdfWithBarcodes.pdf#view=fit" width="100%" height="400px"></iframe>
```csharp
:path=/static-assets/ocr/content-code-examples/how-to/barcodes-read-barcodes.cs
```
<div class="content-img-align-center">
<div class="center-image-wrapper">
<img src="/static-assets/ocr/how-to/barcodes/read-barcodes.webp" alt="비즈니스 프로파일이 포함된 PDF에서 추출된 텍스트와 세 가지 바코드 (A,B,C)를 보여주는 IronOCR 디버그 출력" class="img-responsive add-shadow" />
</div>
</div>
다수의 바코드 값이 바코드 아래에 나타나며 추출된 텍스트에 포함됩니다.
### 왜 IronOCR는 텍스트와 바코드 값을 모두 추출하나요?
IronOCR의 이중 추출은 포괄적인 문서 분석을 제공합니다. 텍스트와 바코드를 모두 포함한 문서를 처리할 때, 라이브러리는 [표준 OCR 텍스트 추출](https://ironsoftware.com/csharp/ocr/examples/simple-csharp-ocr-tesseract/)과 동시에 바코드 심볼로지를 해독합니다. 이 통합된 접근 방식은 다중 처리 패스나 별도의 라이브러리 필요성을 없애줍니다.
텍스트 추출은 사람이 읽을 수 있는 요소를 캡처하는 반면, 바코드 감지는 기계 판독 데이터를 식별하고 해독합니다. 바코드 값이 인쇄된 텍스트와 연관되는 송장, 배송 레이블, 또는 재고 보고서 같은 문서에 도움이 됩니다. [`OcrResult` 클래스](https://ironsoftware.com/csharp/ocr/examples/results-objects/)는 이러한 출력을 구분하며 - `Text` 속성을 통해 텍스트에 접근하고 `Barcodes` 컬렉션을 통해 바코드 데이터에 접근합니다.
### 지원되는 바코드 형식은 무엇인가요?
IronOCR는 20개 이상의 바코드 형식을 지원합니다:
**1D 바코드:**
- 코드 128, 코드 39, 코드 93
- EAN-13, EAN-8
- UPC-A, UPC-E
- 코다바
- ITF (2의 5 인터리브)
- MSI
- 플레시
**2D 바코드:**
- QR 코드
- 데이터 매트릭스
- PDF417
- Aztec 코드
- 맥시코드
MICR 수표를 읽거나 [신분증 문서를 처리](https://ironsoftware.com/csharp/ocr/troubleshooting/identity-documents/)와 같은 전문화된 응용 프로그램의 경우, IronOCR의 바코드 기능은 텍스트 추출 기능을 보완합니다.
### 전용 바코드 라이브러리 대신 바코드 읽기에 OCR을 언제 사용해야 하나요?
다음과 같은 경우 IronOCR의 통합 바코드 읽기를 선택하십시오:
1. **혼합 콘텐츠 처리**: 문서에 텍스트와 바코드가 모두 포함되어 있는 경우(배송 라벨, 송장 또는 [스캔된 문서](https://ironsoftware.com/csharp/ocr/examples/read-scanned-document/))
2. **단일 라이브러리 선호**: 종속성을 최소화하고 단일 솔루션을 사용하려는 경우
3. **PDF 처리**: 이미 IronOCR를 사용하여 [PDF OCR 텍스트 추출](https://ironsoftware.com/csharp/ocr/examples/csharp-pdf-ocr/)을 하고 있는 경우
4. **복잡한 문서 레이아웃**: 텍스트 영역이나 [테이블](https://ironsoftware.com/csharp/ocr/examples/read-table-in-document/) 내에 바코드가 내장된 문서의 경우
다음과 같은 경우 전용 바코드 라이브러리를 사용하십시오:
- 대용량의 바코드 전용 이미지를 처리하는 경우
- 실시간 바코드 스캔이 필요한 경우(< 50ms 응답 시간)
- 손상되거나 저품질 바코드를 처리할 때 특수 알고리즘이 필요한 경우
- 카메라 최적화를 통한 모바일 바코드 스캔 구현
## 문서에서 QR 코드를 어떻게 읽나요?
바코드 읽기와 마찬가지로 `ReadBarCodes` 속성을 true로 설정하십시오. 파일 경로 이외에 다른 코드 변경은 필요하지 않습니다. 이 PDF 문서로 QR 코드를 처리하십시오:
<iframe loading="lazy" src="/static-assets/ocr/how-to/barcodes/pdfWithQrCodes.pdf#view=fit" width="100%" height="400px"></iframe>
```csharp
:path=/static-assets/ocr/content-code-examples/how-to/barcodes-read-qr-codes.cs
```
<div class="content-img-align-center">
<div class="center-image-wrapper">
<img src="/static-assets/ocr/how-to/barcodes/read-qr-codes.webp" alt="문서에서 성공적으로 디코딩된 QR 코드 A, B, C와 추출된 텍스트를 보여주는 Visual Studio의 IronOCR 출력" class="img-responsive add-shadow" />
</div>
</div>
### 왜 같은 구성이 바코드와 QR 코드 모두에 동작하나요?
IronOCR의 통합 바코드 감지 엔진은 모든 기계 판독 코드를 동일하게 처리합니다. `ReadBarCodes` 구성은 형식 별 설정이 필요하지 않은 1D (선형 바코드) 및 2D (QR 코드, 데이터 매트릭스) 형식을 인식하는 포괄적인 심볼로지 감지기를 활성화합니다. 이 디자인은 구현을 간소화하고 구성의 복잡성을 줄여줍니다.
탐지 알고리즘은 자동으로:
- 패턴 인식에 기반하여 심볼로지 유형을 식별
- 적절한 해독 알고리즘 적용
- 방향 및 크기 변형 처리
- 바코드 유형에 관계없이 일관된 형식으로 결과 반환
이 접근 방식은 [컴퓨터 비전 모델](https://ironsoftware.com/csharp/ocr/how-to/computer-vision/)이 작동하는 방식을 반영합니다. 여러 형식으로 훈련받아 보편 감지 기능을 제공합니다.
### OCR로 QR 코드를 읽을 때 흔한 문제는 무엇인가요?
QR 코드를 처리할 때의 일반적인 문제는 다음과 같습니다:
1. **해상도 문제**: PDF에 있는 QR 코드가 최소 모듈 크기보다 낮은 해상도로 다운샘플링 될 수 있습니다. [DPI 설정](https://ironsoftware.com/csharp/ocr/how-to/dpi-setting/)을 사용하여 적절한 해상도를 보장하십시오 (최소 300 DPI 권장).
2. **이미지 품질**: 스캔된 QR 코드는 종종 흐릿함, 노이즈, 왜곡이 발생합니다. [이미지 보정 필터](https://ironsoftware.com/csharp/ocr/how-to/image-quality-correction/)를 적용하여 명확성을 향상시키십시오:
```csharp
// Apply filters to improve QR code readability
ocrTesseract.Configuration.ReadBarCodes = true;
var input = new OcrImageInput("qr-code-scan.jpg");
input.DeNoise();
input.Sharpen();
input.EnhanceResolution();
var result = ocrTesseract.Read(input);
```
3. **방향 문제**: 각도가 있는 QR 코드는 제대로 디코드되지 않을 수 있습니다. [페이지 회전 감지](https://ironsoftware.com/csharp/ocr/how-to/detect-page-rotation/)를 활성화하여 잘못 정렬된 문서를 처리하십시오.
4. **혼합 콘텐츠 간섭**: QR 코드 위에 텍스트나 그래픽이 겹쳐질 경우 탐지가 방해받을 수 있습니다. [영역 자르기](https://ironsoftware.com/csharp/ocr/troubleshooting/crop-regions-rectangles/)를 사용하여 필요할 경우 QR 코드 영역을 분리하십시오.
### QR 코드 인식 정확도를 어떻게 개선할 수 있나요?
다음 기법을 사용하여 QR 코드 인식을 최적화하십시오:
1. **이미지 전처리**: 최적의 보정 설정을 결정하기 위해 [필터 마법사를](https://ironsoftware.com/csharp/ocr/how-to/filter-wizard/) 사용하십시오:
```csharp
:path=/static-assets/ocr/content-code-examples/how-to/barcodes-5.cs
```
2. **다중 페이지 처리**: 여러 페이지에 걸쳐 QR 코드가 있는 [다중 페이지 문서](https://ironsoftware.com/csharp/ocr/examples/csharp-tesseract-multipage-tiff/)의 경우:
```csharp
// Process multi-page documents efficiently
using var pdfInput = new OcrPdfInput("multi-page-qr-document.pdf");
pdfInput.TargetDPI = 300;
var results = ocrTesseract.Read(pdfInput);
foreach (var page in results.Pages)
{
Console.WriteLine($"Page {page.PageNumber}:");
foreach (var barcode in page.Barcodes)
{
Console.WriteLine($" QR Code: {barcode.Value}");
Console.WriteLine($" Location: X={barcode.X}, Y={barcode.Y}");
}
}
```
3. **비동기 처리**: 여러 문서에서 성능을 개선하기 위해 [비동기 메서드](https://ironsoftware.com/csharp/ocr/how-to/async/)를 사용하십시오:
```csharp
// Asynchronous QR code reading
var result = await ocrTesseract.ReadAsync(imageInput);
```
4. **인식 문제 디버그**: IronOCR가 탐지하는 것을 시각화하기 위해 [결과 강조 표시](https://ironsoftware.com/csharp/ocr/how-to/highlight-texts-as-images/)를 활성화하십시오:
```csharp
result.SaveAsHighlightedImage("qr-detection-debug.png");
```
### 대규모 바코드 처리 성능 최적화
바코드 및 QR 코드가 있는 수천 개의 문서를 처리할 때는 다음 최적화 전략을 구현하십시오:
1. **멀티스레딩**: 여러 문서를 동시에 처리하기 위해 [멀티스레드 처리](https://ironsoftware.com/csharp/ocr/examples/csharp-tesseract-multithreading-for-speed/)를 활용하십시오:
```csharp
:path=/static-assets/ocr/content-code-examples/how-to/barcodes-9.cs
```
2. **메모리 관리**: 장기 실행 운영에 대해 [중단 토큰](https://ironsoftware.com/csharp/ocr/examples/abort-token/)을 사용하십시오:
```csharp
// Implement cancellation for large batch processing
using var cts = new CancellationTokenSource();
ocrTesseract.Configuration.CancellationToken = cts.Token;
// Cancel if processing takes too long
cts.CancelAfter(TimeSpan.FromMinutes(5));
```
3. **결과 내보내기**: 텍스트와 바코드 데이터를 모두 유지하기 위해 결과를 [검색 가능한 PDF](https://ironsoftware.com/csharp/ocr/examples/make-pdf-searchable/)로 저장하십시오:
```csharp
// Export results with embedded barcode values
result.SaveAsSearchablePdf("output-with-barcodes.pdf");
```
### 비즈니스 애플리케이션과의 통합
IronOCR의 바코드 기능은 기존의 .NET 애플리케이션과 원활하게 통합됩니다. 일반적인 통합 시나리오에는 다음이 포함됩니다:
- **재고 관리**: 배송 명세서에서 제품 코드를 추출
- **문서 보관**: 포함된 바코드 식별자를 기준으로 스캔된 문서 색인화
- **청구서 처리**: [금융 문서](https://ironsoftware.com/csharp/ocr/troubleshooting/financial-language-pack/)의 줄 항목과 바코드 SKU를 일치시킵니다.
- **의료 기록**: 의료 양식과 함께 환자 손목밴드 바코드를 처리
고용량의 바코드 및 QR 코드를 처리하는 프로덕션 애플리케이션의 경우, [진행 상황 추적](https://ironsoftware.com/csharp/ocr/how-to/progress-tracking/)을 구현하여 처리 상태를 모니터링하고 현실 사용 사례 기반의 성능을 최적화하는 것을 고려하십시오.
IronOCR는 설정에서 ReadBarCodes = true을 설정하여 C#에서 바코드 및 QR 코드를 읽습니다. 이 단일 설정은 QR 코드, Code 128, Data Matrix를 포함하여 20개 이상의 바코드 형식을 지원하며, PDF 및 이미지에서 일반 텍스트 인식과 함께 바코드 값을 자동으로 추출할 수 있게 해줍니다.
빠른 시작: PDF에서 즉시 바코드 읽기
하나의 설정으로 바코드 감지를 활성화하고 IronOCR로 PDF를 스캔하십시오. 아래 코드에서는 바코드 읽기를 활성화하고, PDF를 처리하고, 해독된 값을 검색하는 방법을 보여줍니다.
1Install IronOCR with NuGet Package Manager
PM > Install-Package IronOcr
Install-Package IronOcr
2다음 코드 조각을 복사하여 실행하세요.
var result = new IronOcr.IronTesseract() { Configuration = new IronOcr.TesseractConfiguration { ReadBarCodes = true } }.Read(new IronOcr.OcrPdfInput("document.pdf"));foreach(var bc in result.Barcodes) Console.WriteLine(bc.Value);
var result = new IronOcr.IronTesseract() { Configuration = new IronOcr.TesseractConfiguration { ReadBarCodes = true } }.Read(new IronOcr.OcrPdfInput("document.pdf"));
foreach(var bc in result.Barcodes) Console.WriteLine(bc.Value);
읽기를 수행하기 위해 IronTesseract 객체를 생성하십시오. ReadBarCodes 속성을 true로 설정하여 바코드 감지를 활성화하십시오. OcrPdfInput 생성자를 사용하여 PDF 문서를 가져옵니다. 가져온 PDF에서 OCR을 수행하기 위해 Read 메서드를 사용하십시오.
다음은 이 PDF 문서를 사용하는 예입니다:
using IronOcr;using System;// Instantiate IronTesseractIronTesseract ocrTesseract = new IronTesseract();// Enable barcode readingocrTesseract.Configuration.ReadBarCodes = true;// Add PDFusing var imageInput = new OcrPdfInput("pdfWithBarcodes.pdf");// Perform OCROcrResult ocrResult = ocrTesseract.Read(imageInput);// Output detected barcodes and text valuesConsole.WriteLine("Extracted text:");Console.WriteLine(ocrResult.Text);Console.WriteLine("Extracted barcodes:");foreach (var barcode in ocrResult.Barcodes){Console.WriteLine(barcode.Value);}
using IronOcr;
using System;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Enable barcode reading
ocrTesseract.Configuration.ReadBarCodes = true;
// Add PDF
using var imageInput = new OcrPdfInput("pdfWithBarcodes.pdf");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Output detected barcodes and text values
Console.WriteLine("Extracted text:");
Console.WriteLine(ocrResult.Text);
Console.WriteLine("Extracted barcodes:");
foreach (var barcode in ocrResult.Barcodes)
{
Console.WriteLine(barcode.Value);
}
ImportsIronOcrImportsSystem' Instantiate IronTesseractPrivate ocrTesseract As New IronTesseract()' Enable barcode readingocrTesseract.Configuration.ReadBarCodes = True' Add PDFDim imageInput = New OcrPdfInput("pdfWithBarcodes.pdf")' Perform OCRDim ocrResult AsOcrResult = ocrTesseract.Read(imageInput)' Output detected barcodes and text valuesConsole.WriteLine("Extracted text:")Console.WriteLine(ocrResult.Text)Console.WriteLine("Extracted barcodes:")For Each barcode In ocrResult.BarcodesConsole.WriteLine(barcode.Value)Next barcode
Imports IronOcr
Imports System
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Enable barcode reading
ocrTesseract.Configuration.ReadBarCodes = True
' Add PDF
Dim imageInput = New OcrPdfInput("pdfWithBarcodes.pdf")
' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)
' Output detected barcodes and text values
Console.WriteLine("Extracted text:")
Console.WriteLine(ocrResult.Text)
Console.WriteLine("Extracted barcodes:")
For Each barcode In ocrResult.Barcodes
Console.WriteLine(barcode.Value)
Next barcode
다수의 바코드 값이 바코드 아래에 나타나며 추출된 텍스트에 포함됩니다.
왜 IronOCR는 텍스트와 바코드 값을 모두 추출하나요?
IronOCR의 이중 추출은 포괄적인 문서 분석을 제공합니다. 텍스트와 바코드를 모두 포함한 문서를 처리할 때, 라이브러리는 표준 OCR 텍스트 추출과 동시에 바코드 심볼로지를 해독합니다. 이 통합된 접근 방식은 다중 처리 패스나 별도의 라이브러리 필요성을 없애줍니다.
텍스트 추출은 사람이 읽을 수 있는 요소를 캡처하는 반면, 바코드 감지는 기계 판독 데이터를 식별하고 해독합니다. 바코드 값이 인쇄된 텍스트와 연관되는 송장, 배송 레이블, 또는 재고 보고서 같은 문서에 도움이 됩니다. OcrResult 클래스는 이러한 출력을 구분하며 - Text 속성을 통해 텍스트에 접근하고 Barcodes 컬렉션을 통해 바코드 데이터에 접근합니다.
지원되는 바코드 형식은 무엇인가요?
IronOCR는 20개 이상의 바코드 형식을 지원합니다:
1D 바코드:
코드 128, 코드 39, 코드 93
EAN-13, EAN-8
UPC-A, UPC-E
코다바
ITF (2의 5 인터리브)
MSI
플레시
2D 바코드:
QR 코드
데이터 매트릭스
PDF417
Aztec 코드
맥시코드
MICR 수표를 읽거나 신분증 문서를 처리와 같은 전문화된 응용 프로그램의 경우, IronOCR의 바코드 기능은 텍스트 추출 기능을 보완합니다.
전용 바코드 라이브러리 대신 바코드 읽기에 OCR을 언제 사용해야 하나요?
다음과 같은 경우 IronOCR의 통합 바코드 읽기를 선택하십시오:
혼합 콘텐츠 처리: 문서에 텍스트와 바코드가 모두 포함되어 있는 경우(배송 라벨, 송장 또는 스캔된 문서)
바코드 읽기와 마찬가지로 ReadBarCodes 속성을 true로 설정하십시오. 파일 경로 이외에 다른 코드 변경은 필요하지 않습니다. 이 PDF 문서로 QR 코드를 처리하십시오:
using IronOcr;using System;// Instantiate IronTesseractIronTesseract ocrTesseract = new IronTesseract();// Enable barcode readingocrTesseract.Configuration.ReadBarCodes = true;// Add PDFusing var imageInput = new OcrPdfInput("pdfWithQrCodes.pdf");// Perform OCROcrResult ocrResult = ocrTesseract.Read(imageInput);// Output detected barcodes and text valuesConsole.WriteLine("Extracted text:");Console.WriteLine(ocrResult.Text);Console.WriteLine("Extracted barcodes:");foreach (var barcode in ocrResult.Barcodes){Console.WriteLine(barcode.Value);}
using IronOcr;
using System;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Enable barcode reading
ocrTesseract.Configuration.ReadBarCodes = true;
// Add PDF
using var imageInput = new OcrPdfInput("pdfWithQrCodes.pdf");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Output detected barcodes and text values
Console.WriteLine("Extracted text:");
Console.WriteLine(ocrResult.Text);
Console.WriteLine("Extracted barcodes:");
foreach (var barcode in ocrResult.Barcodes)
{
Console.WriteLine(barcode.Value);
}
ImportsIronOcrImportsSystem' Instantiate IronTesseractPrivate ocrTesseract As New IronTesseract()' Enable barcode readingocrTesseract.Configuration.ReadBarCodes = True' Add PDFDim imageInput = New OcrPdfInput("pdfWithQrCodes.pdf")' Perform OCRDim ocrResult AsOcrResult = ocrTesseract.Read(imageInput)' Output detected barcodes and text valuesConsole.WriteLine("Extracted text:")Console.WriteLine(ocrResult.Text)Console.WriteLine("Extracted barcodes:")For Each barcode In ocrResult.BarcodesConsole.WriteLine(barcode.Value)Next barcode
Imports IronOcr
Imports System
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Enable barcode reading
ocrTesseract.Configuration.ReadBarCodes = True
' Add PDF
Dim imageInput = New OcrPdfInput("pdfWithQrCodes.pdf")
' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)
' Output detected barcodes and text values
Console.WriteLine("Extracted text:")
Console.WriteLine(ocrResult.Text)
Console.WriteLine("Extracted barcodes:")
For Each barcode In ocrResult.Barcodes
Console.WriteLine(barcode.Value)
Next barcode
왜 같은 구성이 바코드와 QR 코드 모두에 동작하나요?
IronOCR의 통합 바코드 감지 엔진은 모든 기계 판독 코드를 동일하게 처리합니다. ReadBarCodes 구성은 형식 별 설정이 필요하지 않은 1D (선형 바코드) 및 2D (QR 코드, 데이터 매트릭스) 형식을 인식하는 포괄적인 심볼로지 감지기를 활성화합니다. 이 디자인은 구현을 간소화하고 구성의 복잡성을 줄여줍니다.
탐지 알고리즘은 자동으로:
패턴 인식에 기반하여 심볼로지 유형을 식별
적절한 해독 알고리즘 적용
방향 및 크기 변형 처리
바코드 유형에 관계없이 일관된 형식으로 결과 반환
이 접근 방식은 컴퓨터 비전 모델이 작동하는 방식을 반영합니다. 여러 형식으로 훈련받아 보편 감지 기능을 제공합니다.
OCR로 QR 코드를 읽을 때 흔한 문제는 무엇인가요?
QR 코드를 처리할 때의 일반적인 문제는 다음과 같습니다:
해상도 문제: PDF에 있는 QR 코드가 최소 모듈 크기보다 낮은 해상도로 다운샘플링 될 수 있습니다. DPI 설정을 사용하여 적절한 해상도를 보장하십시오 (최소 300 DPI 권장).
이미지 품질: 스캔된 QR 코드는 종종 흐릿함, 노이즈, 왜곡이 발생합니다. 이미지 보정 필터를 적용하여 명확성을 향상시키십시오:
// Apply filters to improve QR code readabilityocrTesseract.Configuration.ReadBarCodes = true;var input = new OcrImageInput("qr-code-scan.jpg");input.DeNoise();input.Sharpen();input.EnhanceResolution();var result = ocrTesseract.Read(input);
// Apply filters to improve QR code readability
ocrTesseract.Configuration.ReadBarCodes = true;
var input = new OcrImageInput("qr-code-scan.jpg");
input.DeNoise();
input.Sharpen();
input.EnhanceResolution();
var result = ocrTesseract.Read(input);
' Apply filters to improve QR code readabilityocrTesseract.Configuration.ReadBarCodes = TrueDim input As New OcrImageInput("qr-code-scan.jpg")input.DeNoise()input.Sharpen()input.EnhanceResolution()Dim result = ocrTesseract.Read(input)
' Apply filters to improve QR code readability
ocrTesseract.Configuration.ReadBarCodes = True
Dim input As New OcrImageInput("qr-code-scan.jpg")
input.DeNoise()
input.Sharpen()
input.EnhanceResolution()
Dim result = ocrTesseract.Read(input)
방향 문제: 각도가 있는 QR 코드는 제대로 디코드되지 않을 수 있습니다. 페이지 회전 감지를 활성화하여 잘못 정렬된 문서를 처리하십시오.
혼합 콘텐츠 간섭: QR 코드 위에 텍스트나 그래픽이 겹쳐질 경우 탐지가 방해받을 수 있습니다. 영역 자르기를 사용하여 필요할 경우 QR 코드 영역을 분리하십시오.
// Enhanced QR code reading with preprocessingvar ocrTesseract = new IronTesseract();ocrTesseract.Configuration.ReadBarCodes = true;// Configure for better QR detectionvar input = new OcrImageInput("document-with-qr.pdf");input.TargetDPI = 300; // Ensure sufficient resolutioninput.Binarize(); // Convert to black and whiteinput.DeNoise(); // Remove image artifactsvar result = ocrTesseract.Read(input);
// Enhanced QR code reading with preprocessing
var ocrTesseract = new IronTesseract();
ocrTesseract.Configuration.ReadBarCodes = true;
// Configure for better QR detection
var input = new OcrImageInput("document-with-qr.pdf");
input.TargetDPI = 300; // Ensure sufficient resolution
input.Binarize(); // Convert to black and white
input.DeNoise(); // Remove image artifacts
var result = ocrTesseract.Read(input);
ImportsIronTesseract' Enhanced QR code reading with preprocessingDim ocrTesseract = New IronTesseract()ocrTesseract.Configuration.ReadBarCodes = True' Configure for better QR detectionDim input = New OcrImageInput("document-with-qr.pdf")input.TargetDPI = 300 ' Ensure sufficient resolutioninput.Binarize() ' Convert to black and whiteinput.DeNoise() ' Remove image artifactsDim result = ocrTesseract.Read(input)
Imports IronTesseract
' Enhanced QR code reading with preprocessing
Dim ocrTesseract = New IronTesseract()
ocrTesseract.Configuration.ReadBarCodes = True
' Configure for better QR detection
Dim input = New OcrImageInput("document-with-qr.pdf")
input.TargetDPI = 300 ' Ensure sufficient resolution
input.Binarize() ' Convert to black and white
input.DeNoise() ' Remove image artifacts
Dim result = ocrTesseract.Read(input)
// Process multi-page documents efficientlyusing var pdfInput = new OcrPdfInput("multi-page-qr-document.pdf");pdfInput.TargetDPI = 300;var results = ocrTesseract.Read(pdfInput);foreach (var page in results.Pages){Console.WriteLine($"Page {page.PageNumber}:"); foreach (var barcode in page.Barcodes) {Console.WriteLine($" QR Code: {barcode.Value}");Console.WriteLine($" Location: X={barcode.X}, Y={barcode.Y}"); }}
// Process multi-page documents efficiently
using var pdfInput = new OcrPdfInput("multi-page-qr-document.pdf");
pdfInput.TargetDPI = 300;
var results = ocrTesseract.Read(pdfInput);
foreach (var page in results.Pages)
{
Console.WriteLine($"Page {page.PageNumber}:");
foreach (var barcode in page.Barcodes)
{
Console.WriteLine($" QR Code: {barcode.Value}");
Console.WriteLine($" Location: X={barcode.X}, Y={barcode.Y}");
}
}
ImportsSystem' Process multi-page documents efficientlyUsing pdfInput As New OcrPdfInput("multi-page-qr-document.pdf") pdfInput.TargetDPI = 300 Dim results = ocrTesseract.Read(pdfInput) For Each page In results.PagesConsole.WriteLine($"Page {page.PageNumber}:") For Each barcode In page.BarcodesConsole.WriteLine($" QR Code: {barcode.Value}")Console.WriteLine($" Location: X={barcode.X}, Y={barcode.Y}") Next NextEndUsing
Imports System
' Process multi-page documents efficiently
Using pdfInput As New OcrPdfInput("multi-page-qr-document.pdf")
pdfInput.TargetDPI = 300
Dim results = ocrTesseract.Read(pdfInput)
For Each page In results.Pages
Console.WriteLine($"Page {page.PageNumber}:")
For Each barcode In page.Barcodes
Console.WriteLine($" QR Code: {barcode.Value}")
Console.WriteLine($" Location: X={barcode.X}, Y={barcode.Y}")
Next
Next
End Using
// Process multiple documents in parallelvar documents = new[] { "doc1.pdf", "doc2.pdf", "doc3.pdf" };var results = documents.AsParallel().Select(doc =>{ var tesseract = new IronTesseract(); tesseract.Configuration.ReadBarCodes = true; return tesseract.Read(new OcrPdfInput(doc));}).ToList();
// Process multiple documents in parallel
var documents = new[] { "doc1.pdf", "doc2.pdf", "doc3.pdf" };
var results = documents.AsParallel().Select(doc =>
{
var tesseract = new IronTesseract();
tesseract.Configuration.ReadBarCodes = true;
return tesseract.Read(new OcrPdfInput(doc));
}).ToList();
ImportsIronTesseract' Process multiple documents in parallelDim documents = {"doc1.pdf", "doc2.pdf", "doc3.pdf"}Dim results = documents.AsParallel().Select(Function(doc) Dim tesseract = New IronTesseract() tesseract.Configuration.ReadBarCodes = True Return tesseract.Read(New OcrPdfInput(doc))End Function).ToList()
Imports IronTesseract
' Process multiple documents in parallel
Dim documents = {"doc1.pdf", "doc2.pdf", "doc3.pdf"}
Dim results = documents.AsParallel().Select(Function(doc)
Dim tesseract = New IronTesseract()
tesseract.Configuration.ReadBarCodes = True
Return tesseract.Read(New OcrPdfInput(doc))
End Function).ToList()
// Implement cancellation for large batch processingusing var cts = new CancellationTokenSource();ocrTesseract.Configuration.CancellationToken = cts.Token;// Cancel if processing takes too longcts.CancelAfter(TimeSpan.FromMinutes(5));
// Implement cancellation for large batch processing
using var cts = new CancellationTokenSource();
ocrTesseract.Configuration.CancellationToken = cts.Token;
// Cancel if processing takes too long
cts.CancelAfter(TimeSpan.FromMinutes(5));
' Implement cancellation for large batch processingUsing cts As New CancellationTokenSource() ocrTesseract.Configuration.CancellationToken = cts.Token ' Cancel if processing takes too long cts.CancelAfter(TimeSpan.FromMinutes(5))EndUsing
' Implement cancellation for large batch processing
Using cts As New CancellationTokenSource()
ocrTesseract.Configuration.CancellationToken = cts.Token
' Cancel if processing takes too long
cts.CancelAfter(TimeSpan.FromMinutes(5))
End Using
결과 내보내기: 텍스트와 바코드 데이터를 모두 유지하기 위해 결과를 검색 가능한 PDF로 저장하십시오:
// Export results with embedded barcode valuesresult.SaveAsSearchablePdf("output-with-barcodes.pdf");
// Export results with embedded barcode values
result.SaveAsSearchablePdf("output-with-barcodes.pdf");
' Export results with embedded barcode valuesresult.SaveAsSearchablePdf("output-with-barcodes.pdf")
' Export results with embedded barcode values
result.SaveAsSearchablePdf("output-with-barcodes.pdf")
비즈니스 애플리케이션과의 통합
IronOCR의 바코드 기능은 기존의 .NET 애플리케이션과 원활하게 통합됩니다. 일반적인 통합 시나리오에는 다음이 포함됩니다:
고용량의 바코드 및 QR 코드를 처리하는 프로덕션 애플리케이션의 경우, 진행 상황 추적을 구현하여 처리 상태를 모니터링하고 현실 사용 사례 기반의 성능을 최적화하는 것을 고려하십시오.
자주 묻는 질문
C# 애플리케이션에서 바코드 읽기 기능을 어떻게 활성화할 수 있나요?
IronOCR에서 바코드 읽기를 활성화하려면 TesseractConfiguration에서 ReadBarCodes = true로 설정하십시오. 이 설정 하나만으로 일반 텍스트 인식과 함께 PDF 및 이미지에서 바코드 값을 자동으로 추출할 수 있으며 20가지 이상의 바코드 형식을 지원합니다.
같은 문서에서 텍스트와 바코드를 모두 읽을 수 있나요?
네, IronOCR은 이중 추출을 수행합니다. 표준 OCR을 통해 사람이 읽을 수 있는 텍스트를 추출하는 동시에 기계가 읽을 수 있는 바코드를 디코딩합니다. OcrResult 클래스는 이러한 출력을 분리하여 Text 속성을 통해 텍스트에 접근하고 Barcodes 컬렉션을 통해 바코드 데이터에 접근할 수 있도록 합니다.
어떤 바코드 형식을 감지할 수 있습니까?
IronOCR은 1D 바코드(Code 128, Code 39, Code 93, EAN-13, EAN-8, UPC-A, UPC-E, Codabar, ITF, MSI, Plessey)와 2D 바코드(QR 코드, Data Matrix 등)를 포함하여 20가지 이상의 바코드 형식을 지원합니다.
PDF 문서에서 바코드를 추출하는 방법은 무엇인가요?
IronTesseract 객체를 생성하고 ReadBarCodes를 true로 설정한 다음, OcrPdfInput 생성자를 사용하여 PDF를 가져오고 Read 메서드를 사용합니다. IronOCR은 OCR을 수행하여 감지된 모든 바코드 값을 추출하며, 추출된 값은 result.Barcodes 컬렉션을 통해 확인할 수 있습니다.
텍스트 OCR과 바코드 읽기를 위해 별도의 라이브러리가 필요한가요?
아니요, IronOCR의 통합 접근 방식은 여러 번의 처리 과정이나 별도의 라이브러리가 필요하지 않습니다. 단일 작업으로 표준 OCR 텍스트 추출과 바코드 심볼 디코딩을 동시에 수행합니다.
How can I improve the accuracy of QR code recognition with IronOCR?
Improve QR code recognition by ensuring high resolution, applying image corrections like de-noising and sharpening, and handling orientation issues.
What are common challenges when reading QR codes with OCR?
Common challenges include resolution issues, image quality problems, orientation errors, and interference from overlapping text or graphics.
Can IronOCR handle multi-page PDF documents with barcodes?
Yes, IronOCR can process multi-page PDF documents with barcodes by reading each page individually and outputting detected barcode values and formats.
What is the benefit of using IronOCR for PDF text extraction and barcode reading?
Using IronOCR allows for unified text and barcode extraction from PDF documents, reducing the need for separate libraries and processing steps for each type of data.
How can IronOCR's barcode capabilities integrate into business applications?
IronOCR can be used in various business applications such as inventory management, document archiving, invoice processing, and healthcare records by extracting and processing barcode information.
커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.