이번 강의는 PDF 파일의 각 페이지에서 텍스트를 추출하고, 음성으로 변환 후 MP3 파일로 저장하는 파이썬 프로그램을 만들어 본다. 최종 목적은 PDF 파일을 동영상 파일로 변환해서 유튜브에 업로드하는 과정을 자동화하는 것이다.
프로그램의 전체 기능은 아래와 같다.
Step #1. make jpeg image from pdf file
PDF의 각 페이지를 JPEG 이미지 파일로 저장
Step #2. make mp3 file form pdf file
PDF의 각 페이지에서 텍스트를 추출하고 음성으로 변환 후(Text to speech) MP3 파일로 저장
Step #3. make mp4 by combining jpeg image and mp3 audio one by one
각 페이지별 이미지와 MP3 파일을 결합하여 MP4 파일을 생성
Step #4. make final mp4 by combining all mp4 files
각 페이지에 해당하는 MP4 파일을 순서대로 결합하여 최종 MP4 파일 생성
최종 프로그램이 성공한다면 모든 진행 내용을 PDF로 정리한 후 동영상으로 변환해서 유튜브에 올릴 생각이다.
오늘의 과제는 'PDF 파일의 모든 페이지에서 텍스트 추출, 음성 변환 후 MP3 파일로 저장하는 파이썬 프로그램'을 만드는 것이다.
PDF의 각 페이지를 이미지 파일로 추출하는 기능은 아래 페이지에 있다.
2021.11.01 - [나는 개발자다/실전 파이썬] - [파이썬] PDF 파일의 모든 페이지를 이미지 파일로 저장하기
필요한 라이브러리를 설치한다.
오늘 프로그램에 필요한 모듈은 아래와 같다.
- pyttsx3: 텍스트를 음성으로 변환하는 기능이 있다. (Text To Speech)
- pdfplumber: 텍스트를 스트링으로 추출하는 기능을 사용할 것이다.
- PyPDF2: PDF 파일이 전체 몇 페이지인지 확인하는 기능을 사용한다.
pip install을 이용하여 설치한다.
파이썬 코드는 아래와 같다.
def readPageText(self, data_dir, pdf_file_name):
pdf_file_path = data_dir + pdf_file_name
pdfFile = open(pdf_file_path, 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFile)
pages = pdfReader.numPages
print('page number = ' + str(pages))
audio_file_list = []
with pdfplumber.open(pdf_file_path) as pdf:
for i in range(pages):
page = pdf.pages[i]
text = page.extract_text()
print(text)
speaker = pyttsx3.init()
speaker.say(text)
speaker.runAndWait()
audio_prefix = Path(pdf_file_path).stem
print(audio_prefix)
image_name = audio_prefix + '-page-' + str(i).zfill(3) + self.MP3_EXT
image_file_path = data_dir + image_name
speaker.save_to_file(text, image_file_path)
speaker.runAndWait()
audio_file_list.append(image_file_path)
return audio_file_list
readPageText(self, data_dir, pdf_file_name)
Input
data_dir: pdf 파일이 위치하는 전체 경로를 입력한다.
pdf_file_name: pdf 파일 이름을 입력한다.
Output
audio_file_list: 저장된 mp3 파일의 전체 경로를 리턴한다.
실행 결과를 로그로 찍었다.
page number = 3
안녕하세요.
걍교쥬입니다.
오늘 강의는 파이썬으로 오디오북 만들기입니다.
audiobook_test
여기는 테스트 페이지 두 번째입니다.
audiobook_test
이것으로 강의를 마칩니다.
감사합니다.
audiobook_test
['E:\\workspace\\python\\pdf_to_mp4_converter/data/audiobook_test-page-000.mp3', 'E:\\workspace\\python\\pdf_to_mp4_converter/data/audiobook_test-page-001.mp3', 'E:\\workspace\\python\\pdf_to_mp4_converter/data/audiobook_test-page-002.mp3']
테스트용 PDF는 3페이지로 되어 있고, 각 페이지별 mp3 파일이 정상적으로 저장되었다.
PDF의 첫 번째 페이지에서 최종 추출된 MP3 파일이다.
다음 과제는 각각의 jpg 파일과 mp3 파일을 결합하여 mp4 파일을 3개 생성하는 파이썬 프로그램을 만들 것이다.
'나는 개발자다 > 실전 파이썬' 카테고리의 다른 글
파이썬 코드 다섯 줄로 유튜브 MP3 변환하기 (0) | 2023.03.06 |
---|---|
유튜브 자동화 #3. 이미지와 음성 파일로 동영상 만들기 (2) | 2021.11.07 |
유튜브 자동화 #1. PDF 파일의 모든 페이지를 이미지 파일로 저장하기 (2) | 2021.11.01 |
파이썬 코딩 팁 #01. 리스트 컴프리헨션 (List Comprehension) (0) | 2021.10.26 |
실전 코딩 #01. 상생소비지원금 계산기, 파이썬으로 만들어 보자. (4) | 2021.10.07 |