송아영
송아영
🐶 AI 찐친
🎖️ 마스터 파트너
🧭 경험 찐친

클로드로 연구에 사용할 PDF 슬라이더 만들기

지난 주에 이어 교과서 PDF 활용 여부에 따른 챗 GPT의 답변 성능 차이를 연구하고 있습니다. PDF 제시하지 않았을 때, 대단원별로 제공하였을 때, 소단원별로 제시하였을 때 답변 성능 차이가 있는지 살펴보고 있습니다. 온라인에서 검색해서 PDF 분할기를 찾았습니다. 어도비 PDF 분할 기능이 사용합니다. 그런데 무료 이용은 한두번만 가능하네요. 사용하고 있는 여러 구글 아이디로 사용했는데도 금방 제한이 걸리네요. 게다가 하나의 PDF를 자를 수 있는 횟수도 제한이 있네요.

요즘 챌린지 단톡에서 클로드 3.5 코딩 실력에 대한 간증들이 넘쳐나는지라 저도 클로드로 프로그램 제작에 도전해보았습니다.

클로드에게 프로그램 제작을 지시해서 바로 실행 가능한 파일을 받았던 사례를 보았으나 저에겐 파이썬으로 프로그램을 만들 수 있는 코드만 주네요.


import sys
import os
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFileDialog, QVBoxLayout, QLabel, QProgressBar
from PyQt5.QtCore import Qt
import PyPDF2

class PDFSplitterApp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('PDF Splitter')
        self.setGeometry(300, 300, 300, 150)

        layout = QVBoxLayout()

        self.label = QLabel('PDF 파일을 선택하세요', self)
        layout.addWidget(self.label)

        self.btn = QPushButton('파일 선택', self)
        self.btn.clicked.connect(self.showDialog)
        layout.addWidget(self.btn)

        self.progress = QProgressBar(self)
        layout.addWidget(self.progress)

        self.setLayout(layout)

    def showDialog(self):
        fname = QFileDialog.getOpenFileName(self, 'PDF 파일 열기', '', 'PDF files (*.pdf)')
        
        if fname[0]:
            self.split_pdf(fname[0])

    def split_pdf(self, input_path):
        output_folder = os.path.join(os.path.dirname(input_path), 'split_pdfs')
        if not os.path.exists(output_folder):
            os.makedirs(output_folder)

        with open(input_path, 'rb') as file:
            reader = PyPDF2.PdfReader(file)
            total_pages = len(reader.pages)

            self.progress.setMaximum(total_pages)

            for page_num in range(total_pages):
                writer = PyPDF2.PdfWriter()
                writer.add_page(reader.pages[page_num])
                
                output_path = os.path.join(output_folder, f'page_{page_num + 1}.pdf')
                
                with open(output_path, 'wb') as output_file:
                    writer.write(output_file)

                self.progress.setValue(page_num + 1)
                QApplication.processEvents()

        self.label.setText(f"PDF가 {total_pages}개의 파일로 분할되어\n{output_folder}에 저장되었습니다.")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = PDFSplitterApp()
    ex.show()
    sys.exit(app.exec_())

다시 요청해 보았으나 실행 방법만 알려주어 파이썬으로 프로그램을 개발해 보기로 합니다. 과정을 다음과 같습니다.

  • 위 코드를 파일로 저장한다.

  • PDF 슬라이더 제작을 위한 라이브러리를 설치한다.

  • window+R로 명령 프롬프트를 연다.

  • 실행을 위한 코드를 복사해 붙여넣고 실행한다.

    실행에 실패해 오류 메세지를 주고 해결 방법을 질문합니다.

    이 중에서 권리자 권한 모드로 실행하는 방법이 간단해 보여 방법을 질문했더니 다음과 같은 답을 줍니다.


  • 알려준 방법대로 했지만 아쉽게 다시 오류가 발생했습니다. 다시 해결 방법을 알려달라고 지시합니다.

알려준 대로 파일로 파일 위치로 이동해 명령을 입력하고 실행했습니다. 파일 선택하는 창이 뜹니다. 오~ 성공인가 봅니다.
파일을 선택하니 바로 PDF를 분할하고 폴더에 저장해 줍니다.

실제로 폴더를 확인해 보니 첨부한 파일을 페이지별로 분할해서 잘 저장해 주었습니다. 우와~ 이제 횟수 제한 없이 자유롭게 PDF 분할해서 연구를 위해 활용할 수 있게 되었습니다. 이번 주에는 보고서 마무리 하느라 정신 없어서 옵시디언 열어보지 못해 클로드를 활용한 간단한 파이썬 프로그램 성공 사례를 공유해 봅니다.


#11기연구지식관리

3

👉 이 게시글도 읽어보세요