====== 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)]]