====== ocrmypdf ======
* https://ocrmypdf.readthedocs.io/en/latest/
* https://github.com/ocrmypdf/OCRmyPDF
* [[ocr:tesseract|Tesseract OCR]]를 이용해 [[:pdf|PDF]] OCR / PDF 최적화 등을 수행해준다.
* [[pdf:alpdf|알PDF]] : Windows 용 강력한 OCR 제공
* [[https://github.com/ocrmypdf/OCRmyPDF-EasyOCR|OCRmyPDF EasyOCR Plugin]] - [[ocr:easyocr|EasyOCR]] 을 엔진으로 사용하게 해준다.
===== 설치 =====
==== homebrew ====
* [[linux:linuxbrew|linuxbrew]] 로 가장 최신버전 설치 가능
brew install ocrmypdf tesseract tesseract-lang
=== Ubuntu ===
sudo apt install ocrmypdf tesseract-ocr-kor tesseract-ocr-kor-vert gscan2pdf
=== docker ===
* docker 기반으로 사용하는게 편할지도
* https://hub.docker.com/r/jbarlow83/ocrmypdf-alpine # 더 최신 tesseract. 그러나 버그가 좀 있는듯.
* https://hub.docker.com/r/jbarlow83/ocrmypdf-ubuntu # 그냥 ocrmypdf 도 우분투버전임.
===== 사용 =====
* [[ocr:tesseract|Tesseract OCR]] 환경변수 설정 등도 확인
ocrmypdf -l eng+kor --jobs 4 <원본.pdf>
# 이미지 보정 기능 등 추가
ocrmypdf -l kor+eng \
--deskew # 비틀림 보정
--clean # 배경 깨끗하게
--optimize 3 # PDF 용량 최적화. 최적화 안하려면 0
<원본.pdf>
# OCR 재실행. 이미 OCR 된 파일에 재실행. 최적화 등은 수행하지 않음.
ocrmypdf -l eng --redo-ocr ... input.pdf output.pdf
# OCR 없이 PDF 이미지 최적화만 실행
ocrmypdf --tesseract-timeout=0 --optimize 3 --skip-text input.pdf output.pdf
===== 인식률 높이기 =====
* ''%%--deskew%%'' : 비틀어진 이미지를 똑바로 세워주고 그로인해 인식률 높아짐. 무조건 해주는게 좋다.
* ''%%--clean%%'' : [[https://www.flameeyes.com/projects/unpaper|unpaper]] 를 이용해 책 스캔된것을 깨끗하게 보정. 그러나 OCR 인식에서만 해당 이미지를 사용하고, 실제 출력에서는 원본 대로.
* [[ocr:tesseract|Tesseract OCR]]가 여러 언어를 동시에 인식하면 인식률이 떨어진다는 얘기가 있으나, 그렇다고 ''ocrmypdf'' 로 언어를 따로따로 두번 인식시키면 앞서 인식한 언어 데이터는 사라지게 되므로 한 번에 모든 언어를 처리할 것.
===== PDF 용량 최적화 =====
* ''%%--optimize 숫자%%''
* ''0'' : 최적화 안함
* ''1'' : 원본 손상없이 최적화
* ''2'', ''3'' : 원본 손상하면서 최적화 최대한
* 아래 docker 이미지를 통한 스크립트로 하면 ''jbig2'' 라이브러리 설치 없이 처리 가능
#!/usr/bin/env bash
# 사용법 : pdf-opt.sh 원본.pdf
# 결과는 원본.opt.pdf
# alpine 버전은 버그가 많았음.
FILE_NAME_ONLY=`basename "$1" .pdf`
OPTIMIZED_NAME="${FILE_NAME_ONLY}.opt.pdf"
docker run --rm -i --user "$(id -u):$(id -g)" --workdir /data -v "$PWD:/data" \
jbarlow83/ocrmypdf --tesseract-timeout=0 --optimize 3 --skip-text \
"/data/$1" "/data/$OPTIMIZED_NAME"
* 현재 디렉토리에 있는 것만 처리해야함.
====== 참조 ======
* [[https://superroot.tistory.com/263|PDF 문서 OCR 하는 법 | Free PDF OCR (ocrmypdf)]]