반응형
PDF에서 텍스트를 분리하여 특정 코드를 추출하는 작업이 있었다.
일부 해외 상용 소프트웨어나 몇 가지 오픈소스를 테스트해보았는데 한국어를 지원하지 못하는 경우는 상용 소프웨어도 정상적으로 텍스트를 추출하지 못했다. 오픈 소프트웨어에서도 각각 차이가 많이 나는데 이중에서도 'Apache PDFBox'가 준수한 성능을 보여 주었다.
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