2026년 8월 12일 수요일

AI한테 PDF 도구 만들어달라고 했더니 생긴 문제들 (feat. pymupdf)


AI한테 PDF 도구 만들어달라고 했더니 생긴 문제들 (feat. pymupdf)



수업 들으면서 과제 하다가 진짜 불편한 순간이 반복됐다.

PDF 내용을 살짝 고쳐서 다시 보내야 하는데,

나는 따로 PDF 편집 프로그램이 없어서 매번 이렇게 했다.


  • PDF를 캡쳐해서 이미지로 저장
  • 그 이미지를 핸드폰으로 옮김
  • 핸드폰 편집 앱으로 텍스트 지우고 다시 입력
  • 다시 PC로 보냄


이 과정을 몇 번 반복하다가 

"이거 그냥 AI한테 프로그램 만들어달라고 하면 되는 거 아냐?" 

싶어서 바로 요청했다. 


오늘은 그 과정을 그대로 기록해두려고 한다.

처음 요청부터 불편한 점 발견하고 기능 추가하는 과정까지,

vibe coding으로 도구를 실제로 완성해나가는 흐름을 보여주고 싶었다.





1차 요청 : PDF → 이미지 / 텍스트 수정

처음 AI에게 요청한 내용은 이거였다.

현재 폴더에 PDF 수정 도구를 만들꺼야. 해야할 작업은
1번, PDF 파일을 이미지로 변환해서 저장하기
2번, PDF내 text를 수정할 수 있는 기능
프로그램 1개를 실행했을 때 1번 2번 선택해서 작업할 수 있게 세팅하고,
1번은 시작페이지·끝페이지 입력해서 원하는 페이지만 이미지로 변환,
2번은 수정할 페이지 입력하면 해당 페이지가 출력되어 수정작업 가능하게

이렇게 요청했더니 메뉴 선택형 콘솔 프로그램이 만들어졌다.

프로그램 하나 실행해서 1, 2 중 원하는 기능을 고르는 구조였다.





막상 써보니 생긴 불편함

기능 자체는 됐는데 쓰다 보니 걸리는 부분이 있었다. 

파일 경로를 매번 풀 경로로 직접 입력해야 하는 것이었다. 

파일명 하나 고치려고 긴 경로를 매번 타이핑하는 게 은근 스트레스였다.


그래서 바로 추가 요청을 했다.

"파일 리스트를 출력해서 거기서 수정할 파일을 선택할 수 있게 해줘." 

이렇게 하니까 폴더 안 PDF 목록이 번호로 뜨고,

번호만 입력하면 되는 방식으로 바뀌었다. 


이런 식으로 직접 써보면서 불편한 지점을 바로바로 피드백하는 게

vibe coding에서 제일 중요한 부분인 것 같다.


실제 작업 스샷



과제 제출하다가 터진 문제 : PDF를 어떻게 만들지?

도구가 어느 정도 완성돼서 잘 쓰고 있었는데,

이번엔 다른 문제가 생겼다. 


과제를 PDF로 제출해야 하는데,

나는 애초에 PDF 파일을 처음부터 만드는 방법 자체를 몰랐다.


지금까지는 기존 PDF를 이미지로 바꾸거나 수정하는 기능만 있었지,

"텍스트로 PDF를 새로 만드는" 기능은 없었던 거다.


그래서 3번 기능을 추가 요청했다.

텍스트를 입력하면 그걸 그대로 PDF 파일로 저장해주는 기능이다.





완성된 프로그램 구성

파일 설명
pdf_tool.py 메뉴(1/2/0)로 동작하는 본 프로그램
requirements.txt pymupdf
run_pdf_tool.bat 더블클릭으로 실행 (UTF-8 콘솔)





사용법

처음 한 번만

pip install -r requirements.txt

로 라이브러리를 설치하면 되고,


이후엔 python pdf_tool.py 또는 run_pdf_tool.bat 더블클릭으로 실행한다.



실제 작업 스샷


기능 1 — PDF → 이미지

  • PDF 경로 입력 (파일 리스트에서 선택)
  • 시작·끝 페이지(1-based, 포함) 입력
  • 저장 폴더 (Enter 시 원본이름_images)
  • DPI (Enter 시 150, 36~600)
  • 범위 내 각 페이지를 page_0001.png 형식으로 저장

기능 2 — 텍스트 수정

  • PDF 경로, 수정할 페이지 번호 입력
  • 해당 페이지 미리보기 PNG(_preview_page_N.png) 생성 후 열지 여부 선택(y/n)
  • 같은 페이지에서 추출한 텍스트를 콘솔에 참고용으로 출력
  • 찾을 문자열 → 바꿀 문자열을 반복 입력 (여러 번 가능)
  • 찾을 문자열에 빈 입력 후 Enter → 새 PDF로 저장 (기본: 원본이름_edited.pdf)
  • Windows에서는 가능하면 malgun.ttf로 한글 삽입

기능 3 — 텍스트를 PDF로 저장

  • 프로그램 실행 후 3 입력
  • 안내에 따라 여러 줄로 내용 입력
  • 끝낼 때 새 줄에 ###만 입력하고 Enter (이 줄은 PDF에 들어가지 않음)
  • 저장할 PDF 경로 (Enter 시 현재 폴더의 typed_output.pdf)
  • 글자 크기 (Enter 시 11pt)
  • 저장 후 PDF를 열지 여부(y/n)




기능 2의 동작 방식과 한계

텍스트 수정 기능은

search_for로 원하는 문자열의 위치를 찾은 다음,

그 영역을 흰색으로 덮고 같은 자리에 새 문자열을 넣는 방식으로 동작한다.


원리를 알고 나니 왜 특정 상황에서 결과가 이상하게 나오는지도 이해가 됐다.


상황 결과
스캔 이미지 PDF (텍스트 레이어 없음) 추출·검색 자체가 안 됨 → OCR 별도 필요
복잡한 레이아웃 · 작은 글꼴 겹침이나 줄바꿈이 어긋날 수 있음


그래서 중요한 문서는

★저장 전에 미리보기로 꼭 확인하는 습관★ 을 들이고 있다.





정리

처음엔 

"PDF 이미지 변환 + 텍스트 수정" 

딱 두 가지만 있으면 될 줄 알았는데,


실제로 써보니까 파일 경로 입력 방식이 불편했고,

그 다음엔 아예 PDF를 새로 만드는 기능이 필요해졌다.


필요할 때마다 하나씩 기능을 붙여나간 셈이다.


완벽한 기획을 미리 다 세우고 시작하는 것보다,

일단 만들어서 써보고

불편한 부분을 그때그때 요청해서 고쳐나가는 방식

 나한테는 훨씬 잘 맞는 것 같다.


댓글 없음:

댓글 쓰기

커서(Cursor)로 바이브코딩을 처음 해본 후기|편하긴 한데 앱이 버그 덩어리가 됐다

커서(Cursor)로 바이브코딩을 처음 해본 후기 편하긴 한데 앱이 버그 덩어리가 됐다 오늘은 커서(C...