반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

오늘은 어느 독자분의 질문에 답해드리기 위해서 글을 써보려 합니다.

 

질문의 핵심은 다음과 같았습니다.

 

파이썬으로 PDF 파일을 읽어서 검색으로 특정 문자를 찾고 그 문제에 대해 형광펜으로 강조하고 싶은데, 어떻게 해야할지 몰라 문의드립니다.

 

자 그럼 이 문제를 해결하기 위해서 함께 방법을 알아보겠습니다.

 

 


1. PyMuPDF란?

 

PyMuPDF는 Python용 PDF 처리 라이브러리로, PDF 파일의 생성, 수정, 추출, 텍스트 검색, 이미지 추출 등 다양한 작업을 수행할 수 있습니다. 챗GPT에게 물어보니 제가 항상 사용하던 PyPDF2 보다 더  빠른 속도와 더 많은 기능을 제공하며, 특히 큰 규모의 PDF 파일에 대해서도 효율적으로 작동하는 패키지라고 하네요.

 

패키지 설치는 터미널에 아래의 코드를 입력 후 엔터를 눌러주시면 진행 됩니다.

pip install pymupdf

 

아래와 같은 메시지가 출력되면 설치가 정상적으로 완료된거예요. 

 

2. 형광펜으로 특정 문자 강조하기

 

새롭게 알게 된 PyMuPDF의 전체적인 기능에 대해서는 차차 알아가는 걸로 하고, 오늘은 바로 독자분의 궁금증을 해결해보도록 하겠습니다. 전체적인 코드는 아래와 같습니다.

 

주석을 자세하게 달아 두었으니 코드의 흐름만 간단히 써보겠습니다.

 

1) PyMuPDF 패키지 import (불러올 때는 fitz라는 이름으로 불러옴에 주의!)

2) 불러올 pdf 경로, 저장할 경로, 검색할 텍스트 변수에 입력

3) 앞서 정의한 함수(higlight_text_in_pdf)에 인자 입력하여 함수 실행

4) 함수 내부 동작

    - 강조하고 싶은 PDF 불러오기

    - 전체 페이지 각각 가져오면서 텍스트 검색

    - 검색 텍스트와 일치된 텍스트 강조 (색상은 R, G, B 순이며 1,1,0은 노란색, 0,1,0은 초록색)

    - 저장 후 닫기

 

# PyMuPDF 패키지 불러오기
import fitz  

# 함수 정의
def highlight_text_in_pdf(input_pdf_path, output_pdf_path, search_text):

    # PDF 파일 열기
    pdf_document = fitz.open(input_pdf_path)

    # PDF의 각 페이지를 순회하며
    for page_number in range(len(pdf_document)):
        # 페이지 가져오기
        page = pdf_document.load_page(page_number)

        # 페이지에서 텍스트 검색
        matches = page.search_for(search_text)

        # 각 일치 항목을 강조
        for match in matches:
            # 일치 항목의 사각형 좌표 가져오기
            highlight = page.add_highlight_annot(match)

            # 강조의 색상 설정 (예: 노란색)
            highlight.set_colors({"stroke": (1, 1, 0), "fill": (1, 1, 0)})

    # 수정된 PDF 저장
    pdf_document.save(output_pdf_path)
    pdf_document.close()

# 사용 예시
input_pdf_path = "input.pdf"  # 입력 PDF 파일 경로
output_pdf_path = "output.pdf"  # 출력 PDF 파일 경로
search_text = "검색할_텍스트"  # 검색하고자 하는 텍스트

# 함수 실행
highlight_text_in_pdf(input_pdf_path, output_pdf_path, search_text)

 

[실행 결과] _ 보유하고 있던 PDF 문서에서 '빅데이터'만 노란색 형광펜 표시

 


 

오늘 준비한 내용은 여기까지 입니다. 오늘 배운 PyMuPDF를 이용해 텍스트나 이미지도 추출 가능하다고 하니 빨리 공부해서 포스팅 해보도록 하겠습니다.

 

감사합니다.

반응형

+ Recent posts