본문 바로가기
Java

Java PDF 텍스트 추출 및 특정 문자 찾기

by 헬로월드 2021. 11. 7.
반응형

PDF에서 텍스트를 분리하여 특정 코드를 추출하는 작업이 있었다.

 

일부 해외 상용 소프트웨어나 몇 가지 오픈소스를 테스트해보았는데 한국어를 지원하지 못하는 경우는 상용 소프웨어도 정상적으로 텍스트를 추출하지 못했다. 오픈 소프트웨어에서도 각각 차이가 많이 나는데 이중에서도 'Apache PDFBox'가 준수한 성능을 보여 주었다.

 

https://pdfbox.apache.org/

 

Apache PDFBox | A Java PDF Library

Apache PDFBox® - A Java PDF Library The Apache PDFBox® library is an open source Java tool for working with PDF documents. This project allows creation of new PDF documents, manipulation of existing documents and the ability to extract content from docum

pdfbox.apache.org

Apache License v2.0의 오픈소스로 한글지원 및 준수한 속도를 보여주었다.

 

 

 

예제

Gradle 의존성 추가

implementation 'org.apache.pdfbox:pdfbox:2.0.24'

 

Java 코드

// pdf 파일 경로
Stirng fileURl = "...";

// PDFBox 설정
InputStream stream = new URL(fileUrl).openStream();
PDDocument document = PDDocument.load(stream);
PDFTextStripper stripper = new PDFTextStripper();

// 텍스트 추출
String extractText = stripper.getText(document);

// 공백 제거
extractText = extractText.trim().replace(" ", "");

// 특정 문자 추출 (예제: 이메일)
Set<String> emails = new HashSet<>();
// 이메일 정규식
String regEx = "^[a-zA-Z0-9]+\@[a-zA-Z]+\.[a-zA-Z]+$";

Pattern pattern = Pattern.compile(regEx);
Matcher matcher = pattern.matcher(extractText);

// 추출한 텍스트에서 정규식에 의한 특정 문자 추출
while (matcher.find()) {
    emails.add(matcher.group());
}
728x90