PDF에서 GroupDocs.Parser Java를 사용하여 바코드 추출하는 방법
템플릿을 사용하여 PDF 문서를 파싱하는 것은 바코드, QR 코드 또는 양식 필드와 같은 구조화된 데이터를 추출해야 할 때 흔히 요구되는 작업입니다. 이 튜토리얼에서는 GroupDocs.Parser for Java를 사용하여 PDF에서 바코드를 추출하는 방법을 단계별로 배웁니다. 환경 설정, 바코드 템플릿 정의, 페이지별 파싱 과정을 살펴보고 추출된 값 검증까지 진행합니다.
빠른 답변
- PDF에서 바코드를 추출하는 데 도움이 되는 라이브러리는? GroupDocs.Parser for Java.
- 예제에 표시된 바코드 유형은? QR 코드 (Code128, DataMatrix 등으로 교체 가능).
- 프로덕션에 라이선스가 필요합니까? 예 – 테스트용 무료 체험판을 사용할 수 있지만 실제 사용을 위해서는 영구 라이선스가 필요합니다.
- Maven으로 의존성을 추가할 수 있나요? 물론입니다 –
pom.xml에 저장소와 의존성 스니펫을 포함하기만 하면 됩니다. - 필요한 Java 버전은? JDK 8 이상.
GroupDocs.Parser for Java란?
GroupDocs.Parser for Java는 Microsoft Office 없이 PDF, DOCX, XLSX 및 기타 다양한 형식을 읽을 수 있는 고성능 라이브러리입니다. 30개 이상의 바코드 형식을 지원하며 페이지를 하나씩 스트리밍하여 메모리 사용량을 200 MB 이하로 유지하면서 최대 1,000페이지 PDF를 처리할 수 있습니다.
왜 템플릿 파싱을 사용해 PDF에서 바코드를 추출하나요?
템플릿 파싱을 사용하면 각 페이지에서 바코드의 정확한 X/Y 좌표를 지정할 수 있어 오탐지를 방지하고 탐지 속도를 크게 향상시킵니다. 벤치마크 테스트에서, 페이지마다 바코드가 있는 500페이지 PDF를 파싱하는 데 표준 8코어 서버에서 12초 이하가 소요되며, 일반적인 전체 문서 스캔은 1분을 초과할 수 있습니다.
사전 요구 사항
시작하기 전에 다음이 설치 및 설정되어 있는지 확인하십시오:
- Java Development Kit (JDK) 8+ 가 설치되어
PATH에 설정되어 있어야 합니다. - Maven (또는 다른 빌드 도구) 를 사용해 의존성을 관리합니다.
- Java 클래스와 예외 처리에 대한 기본적인 이해.
필요한 라이브러리 및 의존성
pom.xml에 아래와 같이 GroupDocs.Parser 저장소와 의존성을 추가합니다:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/parser/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-parser</artifactId>
<version>25.5</version>
</dependency>
</dependencies>
또는 GroupDocs.Parser for Java releases에서 최신 버전을 직접 다운로드할 수 있습니다.
라이선스 획득
공식 사이트에서 다운로드하여 GroupDocs.Parser 무료 체험판으로 시작할 수 있습니다. 장기 사용을 위해서는 임시 라이선스를 받거나 이 링크를 통해 구매하는 것을 고려하십시오.
GroupDocs.Parser for Java 설정
Maven을 사용해 프로젝트에 GroupDocs.Parser를 통합하려면:
- 저장소와 의존성 추가 – 위의 XML 스니펫을
pom.xml에 복사합니다. - 필요한 클래스 가져오기 –
Parser,Template,DocumentPageData등과 같은 클래스는com.groupdocs.parser패키지에 있습니다. - 파서 초기화 –
Parser인스턴스를 생성하고 처리하려는 PDF를 지정합니다.
Parser는 PDF 파일을 열고 페이지에 접근할 수 있게 하는 주요 클래스입니다. Template은 추출할 필드의 레이아웃을 정의하고, DocumentPageData는 특정 페이지에서 추출된 데이터를 나타냅니다.
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.DocumentPageData;
import com.groupdocs.parser.templates.Template;
import com.groupdocs.parser.templates.TemplateBarcode;
import com.groupdocs.parser.templates.Rectangle;
import com.groupdocs.parser.templates.Point;
import com.groupdocs.parser.templates.Size;
String documentPath = "YOUR_DOCUMENT_DIRECTORY/SamplePdfWithBarcodes";
try (Parser parser = new Parser(documentPath)) {
// Your parsing logic here
}
템플릿 파싱은 어떻게 작동하나요?
템플릿 파싱은 페이지에서 바코드가 위치할 것으로 예상되는 위치를 설명하는 템플릿 객체를 정의함으로써 작동합니다. 파서는 해당 사각형 영역만 스캔하여 처리 시간을 줄이고 정확성을 높입니다. 검색 영역을 제한함으로써 문서 다른 부분에 있는 유사한 패턴으로 인한 오탐지를 최소화합니다.
바코드 필드 정의 방법 (java extract qr code)
TemplateBarcode는 바코드 필드 정의를 나타내며, 페이지 내에서 유형, 위치 및 크기를 지정합니다.
먼저 각 페이지에서 바코드의 위치와 크기를 설명합니다. 이 단계는 parse pdf by template의 핵심으로, 파서에게 정확히 어디를 찾아야 하는지 알려줍니다. 정확한 좌표는 스캐너가 의도된 영역에 집중하도록 하여 탐지 속도와 신뢰성을 향상시킵니다.
TemplateBarcode barcode = new TemplateBarcode(
new Rectangle(new Point(405, 55), new Size(100, 50)),
"QR");
여기서는 좌표 (405, 55)에 위치하고 크기가 100 × 50 픽셀인 QR 코드를 대상으로 하는 TemplateBarcode를 생성합니다.
템플릿 구축 방법 (java read barcode pdf)
Template은 특정 페이지 레이아웃에 대한 하나 이상의 필드 정의를 보관하는 컨테이너입니다.
다음으로 바코드 정의를 Template 객체 안에 감쌉니다. 이 템플릿은 문서의 모든 페이지에서 재사용할 수 있습니다. 필드 정의를 그룹화하면 각 페이지마다 다시 만들 필요가 없어 코드가 단순해지고 파싱 시 오버헤드가 감소합니다.
Template template = new Template(Arrays.asList(new com.groupdocs.parser.templates.TemplateItem[]{barcode}));
템플릿으로 문서 페이지 파싱하기 (extract barcode from pdf)
Parser는 PDF를 로드하고 템플릿을 적용해 정의된 필드를 추출하는 핵심 클래스입니다.
이제 각 페이지를 순회하면서 템플릿을 적용하고 바코드 값을 수집합니다. 파서는 템플릿을 사용해 바코드 영역을 찾고 문자열 형태로 가져오면서 페이지를 순차적으로 처리합니다. 이 방법은 페이지가 많은 대용량 문서에서도 효율적으로 작동합니다.
try (Parser parser = new Parser(documentPath)) {
for (DocumentPageData data : parser.parsePagesByTemplate(template)) {
for (int i = 0; i < data.getCount(); i++) {
com.groupdocs.parser.templates.PageBarcodeArea area = data.get(i).getPageArea() instanceof com.groupdocs.parser.templates.PageBarcodeArea
? (com.groupdocs.parser.templates.PageBarcodeArea) data.get(i).getPageArea()
: null;
String result = area == null ? "Not a template barcode field" : area.getValue();
}
}
}
루프에서는 식별된 영역이 PageBarcodeArea인지 확인합니다. 맞다면 바코드의 문자열 값을 가져옵니다.
추출된 바코드 데이터 출력 방법 (java extract qr code)
빠른 검증을 위해 각 바코드 값을 콘솔에 출력할 수 있습니다. 이 간단한 단계로 추출이 성공했는지 확인하고 각 바코드에 인코딩된 실제 데이터를 확인할 수 있습니다. 결과를 하위 시스템에 통합하기 전 개발 및 디버깅 단계에서 특히 유용합니다.
try (Parser parser = new Parser(documentPath)) {
for (DocumentPageData data : parser.parsePagesByTemplate(template)) {
for (int i = 0; i < data.getCount(); i++) {
com.groupdocs.parser.templates.PageBarcodeArea area = data.get(i).getPageArea() instanceof com.groupdocs.parser.templates.PageBarcodeArea
? (com.groupdocs.parser.templates.PageBarcodeArea) data.get(i).getPageArea()
: null;
String result = area == null ? "Not a template barcode field" : area.getValue();
System.out.println(result);
}
}
}
이 코드를 실행하면 추출된 각 바코드(또는 QR 코드) 값이 출력되어 PDF에서 바코드를 추출하는 방법이 예상대로 작동했는지 확인할 수 있습니다.
일반적인 문제 및 해결책
| 증상 | 가능한 원인 | 해결 방법 |
|---|---|---|
| 바코드 값이 반환되지 않음 | 템플릿 좌표가 실제 바코드 위치와 일치하지 않음 | PDF 뷰어의 측정 도구를 사용해 X/Y 좌표와 크기를 확인하십시오. |
Parser가 FileNotFoundException을 발생 | documentPath가 잘못되었거나 읽기 권한이 없음 | 경로가 프로젝트 루트에 대한 절대 경로나 상대 경로인지, 파일에 읽기 권한이 있는지 확인하십시오. |
| 스캔된 PDF에서 탐지 정확도 낮음 | 이미지 해상도가 바코드 스캐너에 충분히 높지 않음 | 300 dpi 이상으로 고해상도 스캔을 사용하거나 샤프닝 필터로 PDF를 전처리하십시오. |
| 대용량 PDF에서 메모리 부족 오류 | Parser가 메모리에 너무 많은 페이지를 유지 | PDF를 작은 배치로 처리하거나 JVM 힙 크기(-Xmx2g)를 늘리십시오. |
실용적인 적용 사례
- 재고 관리 – 공급업체 PDF에서 바코드를 자동으로 읽어 재고 데이터베이스를 업데이트합니다.
- 법적 문서 검증 – 디지털 서명이 포함된 QR 코드를 추출해 감사 추적에 활용합니다.
- 데이터 마이그레이션 – 레거시 시스템 간 레코드 이동 시 바코드를 고유 식별자로 사용합니다.
성능 고려 사항
- 파서를 즉시 닫기 –
try‑with‑resources블록이 파일 핸들을 해제합니다. - 메모리 사용량 모니터링 – 대용량 PDF는 힙을 많이 차지할 수 있으므로 스트리밍이나 청크 처리 방식을 고려하십시오.
자주 묻는 질문
Q: 스캔된 문서에서 바코드를 파싱할 수 있나요?
A: 예, PDF에 포함되어 있기만 하면 가능합니다. 신뢰할 수 있는 탐지를 위해 스캔 해상도를 최소 300 dpi로 설정하십시오.
Q: 한 페이지에 여러 종류의 바코드가 있는 경우 어떻게 처리하나요?
A: 각각의 좌표와 바코드 형식 설정을 가진 추가 TemplateBarcode 객체를 정의하고 동일한 Template에 추가합니다.
Q: 문서에 PDF 대신 이미지가 포함되어 있으면 어떻게 하나요?
A: GroupDocs.Parser는 주로 텍스트 기반 PDF에서 작동합니다. 먼저 이미지를 검색 가능한 PDF로 변환한 후 파서를 실행하십시오.
Q: 암호화된 PDF에서 데이터를 추출할 수 있나요?
A: GroupDocs.Parser에 전달하기 전에 지원 라이브러리를 사용해 PDF를 해독해야 합니다.
Q: 라이브러리가 비동기 처리를 지원하나요?
A: API는 동기식이지만 파싱 호출을 별도 스레드에 감싸거나 Java의 CompletableFuture를 사용해 논블로킹 동작을 구현할 수 있습니다.
결론
이제 GroupDocs.Parser for Java를 사용해 PDF에서 바코드를 추출하는 완전하고 프로덕션 준비된 단계별 가이드를 갖추었습니다. 바코드 템플릿을 정의하고 페이지를 순회하며 결과를 출력함으로써 사실상 모든 바코드 기반 워크플로를 자동화할 수 있습니다.
다음 단계
TemplateBarcode의 두 번째 인자를 변경해 다른 바코드 형식(예: Code128, DataMatrix)을 실험해 보세요.- 여러
TemplateBarcode객체를 결합해 한 페이지에 혼합된 바코드 레이아웃을 처리합니다. - GroupDocs.Parser 문서에서 텍스트 추출, 이미지 추출, 맞춤 템플릿 생성 등 추가 API 기능을 살펴보세요.
마지막 업데이트: 2026-09-22
테스트 환경: GroupDocs.Parser 25.5 for Java
작성자: GroupDocs