반응형
작성일: 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% 이상이 된다.

 

 

+ Recent posts