Python은 다양한 작업을 처리할 수 있도록 방대한 라이브러리 생태계를 제공합니다. PDF에서 데이터와 메타 정보를 추출할 때는 PyPDF2 패키지를 활용할 수 있습니다. 이 패키지는 사용법이 간단하면서도 PDF에서 데이터 추출, 문서 내 키워드 검색, 하이퍼링크·URL 등 메타 정보 확인과 같은 다양한 기능을 제공합니다.
이 글에서는 PyPDF2 패키지를 사용해 PDF 문서에 포함된 하이퍼링크를 추출하는 방법을 단계별로 살펴보겠습니다.
PDF에서 하이퍼링크를 추출하는 단계
명령 셸에 pip install PyPDF2를 입력하여 로컬 환경에 PyPDF2를 설치합니다.
Python 코드에서 PyPDF2를 임포트합니다.
파일을 바이너리 모드('rb')로 엽니다. 이렇게 해야 파일 내부의 URL 패턴을 정확하게 인식할 수 있습니다.
특정 페이지의 링크를 추출하는 함수를 정의합니다.
문서의 모든 페이지를 순회하며 extractText() 함수로 각 페이지의 텍스트를 추출합니다.
PDF에서 하이퍼링크를 찾을 때는 일반적으로 Python의 패턴 매칭 개념을 사용합니다. 정규표현식으로 패턴을 찾기 위해 re 모듈을 임포트합니다.
findall(regex, string) 함수를 사용해 https:// 또는 https://로 시작하는 패턴과 일치하는 문자열을 찾습니다.
URL이 발견되면 해당 URL을 반환하고 화면에 출력합니다.
예제 코드
# 필요한 패키지 임포트
import PyPDF2
import re
# 파일을 바이너리 모드로 열기
file = open("newfile.pdf", 'rb')
readPDF = PyPDF2.PdfFileReader(file)
def find_url(string):
# 패턴과 일치하는 모든 문자열 찾기
regex = r"(https?://\S+)"
url = re.findall(regex,string)
for url in url:
return url
# 파일의 모든 페이지 순회
for page_no in range(readPDF.numPages):
page=readPDF.getPage(page_no)
# 페이지에서 텍스트 추출
text = page.extractText()
# URL 출력
print(find_url(text))
# 파일 닫기
file.close()
실행 결과
위 코드를 실행하면 지정된 PDF 문서 파일에 포함된 모든 하이퍼링크가 순서대로 화면에 출력됩니다.

참고 사항
PyPDF2는 현재 개발이 중단되고 후속 프로젝트인 pypdf로 통합되었습니다. 최신 버전을 사용한다면 pip install pypdf로 설치하고, PdfFileReader 대신 PdfReader를, extractText() 대신 extract_text()를 사용하는 것이 좋습니다. 기존 PyPDF2 코드도 대부분 클래스명과 메서드명만 변경하면 그대로 동작합니다.