반응형
작성일: 2025년 1월 12일
문서를 읽다보면, 한 화면씩 넘기면서 캡처한 내용을 PDF 파일로 만들어야 할 경우가 있다.
그리고 이 PDF 파일에서 문자열 검색이 가능하도록 OCR을 적용해야 할 경우도 발생한다.
그럴 때 아래와 같이 Python Script를 작성해서 실행하면 된다.
Step 1: 화면 캡처해서 PNG 파일로 저장하기
#!/opt/homebrew/bin/python3
import os
import time
import pyautogui
## 숫자 745를 2로 나눈 이유는 2 Page를 한 화면으로 캡처하기 위함.
maxPage = (745 // 2) + 1
time.sleep(5)
for idx in range(maxPage):
## 숫자 110,170,1785,1205는 캡처할 화면의 위치에 대한 X-Y 좌표 값이다.
## 캡처할 때마다 이 숫자를 조정해서 사용해야 한다.
my_cmd = "screencapture -R110,170,1785,1205 p_%04d.png" % idx
print("cmd:", my_cmd)
os.system(my_cmd)
## 오른쪽 화살표 키를 누르면서 한 화면씩 캡처하기.
pyautogui.press('right')
time.sleep(1)
Step 2: 여러 개의 PNG 파일을 PDF 파일로 변환하기
#!/opt/homebrew/bin/python3
import os
import img2pdf
# Replace the directory path with the folder containing JPEG images to be converted
directory_path = "."
image_files = [idx for idx in sorted(os.listdir(directory_path)) if idx.endswith(".png")]
# Convert the list of JPEG images to a single PDF file
pdf_data = img2pdf.convert(image_files)
# Write the PDF content to a file (make sure you have write permissions for the specified file)
with open("my-book.pdf", "wb") as file:
file.write(pdf_data)
참고: 위와 같이 PDF 파일로 변환하면, 글자가 그림으로 표현되기 때문에 "문자열" 검색이 되도록 하려면 OCR을 적용해야 한다.
Step 3: PDF 파일에 OCR 적용하기
OCR 관련 소프트웨어 패키지를 설치하기
$ brew install ocrmypdf
## 영어 이외에 언어(예: 한국어, 일본어, 중국어)를 사용하려면 아래와 같이 tesseract-lang 패키지를 설치
$ brew install tesseract-lang
기존 PDF 파일을 OCR 적용된 PDF 파일로 변환하기
## "eng+kor" 옵션을 설정하여 Image에 있는 영어, 한국어를 인식하도록 함.
$ ocrmypdf -l eng+kor my-book.pdf my-book-ocr.pdf
Apple m2 CPU를 사용했을 경우, 만약 500 Page 분량이면 ocymypdf 명령이 완료되기 까지 10분 정도 소요된다.
그리고 8개의 CPU Core 사용률이 모두 95% 이상이 된다.
'Python' 카테고리의 다른 글
Python 온라인 자습서(Tutorial), Reference, Howto, API 문서 (0) | 2024.03.27 |
---|---|
Python Log Class 및 예제 (0) | 2024.03.26 |
Bind9 Zone 파일의 Serial 변경하는 Python Script, Bash Script (0) | 2024.03.25 |
Prometheus 설치 + Python 예제 코드 (0) | 2023.06.13 |
YAML, JSON 파일 내용 비교 (변경 내역 비교) (0) | 2021.11.18 |