다음 상황을 처리하기 위해 이 재귀 디렉터리 파일 검색의 입력 및 이름 출력을 어떻게 업데이트할 수 있습니까?

다음 상황을 처리하기 위해 이 재귀 디렉터리 파일 검색의 입력 및 이름 출력을 어떻게 업데이트할 수 있습니까?

디렉토리를 반복적으로 통과하고 PDF를 ocrs하고 PDF를 업데이트하는 스크립트를 업데이트 중입니다.

간단한 버전에서는 작동합니다.

ocrmypdf -l vie --deskew --clean --force-ocr --sidecar vietnamese_website.txt Vietnamese\ Website.jpg Vietnamese\ Website.pdf --verbose 1

폴더를 반복적으로 반복하고 다양한 파일 형식을 사용하기를 원하므로 찾기를 다음으로 확장했습니다.

find . \( -name '*.pdf' -o -name '*.jpg' -o -name '*.tiff' -o -name '*.jpeg' -o -name '*.tif' -o -name '*.png' \)

일괄 처리 및 병렬 처리의 예는 다음과 같습니다.

find .  -name '*.pdf' | parallel --tag -j 2 ocrmypdf -l languages --deskew --clean --force-ocr --verbose 1 '{}' '{}'

내 질문은 두 부분으로 나누어져 있습니다.

"언어"는 지원되는 하이퍼스퀘어 훈련 데이터의 전체 목록에 대한 별칭입니다. 확장하려면 macOS의 셸에 다음을 입력하면 됩니다. 별칭 언어='eng+rus+vie+ukr+fra+spa+afr+amh+ara+asm+aze+aze_cyrl+bel+ben+bod+bos+bre +bul+ cat+ceb+ces+chi_sim+chi_sim_vert+chi_tra+chi_tra_vert+chr+cos+cym+dan+dan_frak+deu+deu_frak+div+dzo+ell+eng+enm+epo+equ+est+eus+fao+ fas+ fil+ fin+fra+frk+frm+fry+gla+gle+glg+grc+guj+hat+heb+hin+hrv+hun+hye+ik... 등 - ocrmypdf는 자신의 언어가 이 작업과 같다고 생각합니다. --sidecar가 텍스트 파일을 출력하도록 하고 싶습니다. '{}.txt'는 그러한 파일이 없다고 불평합니다. 이것이 내가 있는 곳이다.

find . \( -name '*.pdf' -o -name '*.jpg' -o -name '*.tiff' -o -name '*.jpeg' -o -name '*.tif' -o -name '*.png' \) | parallel --tag -j 2 ocrmypdf -l languages --deskew --clean --force-ocr --sidecar '{}.txt' '{}' '{}' --verbose 1

필요한 것을 찾을 수 있는 곳에서 얻었지만 --sidecar가 만족스럽지 않았습니다. 그렇다면 별칭과 '$1.txt'는 어떻게 해야 할까요?

답변1

제 생각엔 두 가지 포인트가 있는 것 같아요.

  • 별칭 확장은 옵션이 아닌 첫 번째 단어에서만 작동합니다.
  • 제공된 이름을 일부 수정해야 합니다 find.

find명령줄에서 모든 작업을 수행할 수 있지만 이 목적을 위해 스크립트를 만드는 것이 더 쉬울 것이라고 생각했습니다 ocrmypdf.sh.

#!/bin/bash

languages='eng+rus+vie+...'
base="${1%.*}
ocrmypdf -l "$languages" --deskew --clean --force-ocr --sidecar "$base.txt" "$1" "$base.pdf --verbose 1

그런 다음 실행하면 됩니다.

find . \( -name '*.pdf' -o -name '*.jpg' -o -name '*.tiff' -o -name '*.jpeg' -o -name '*.tif' -o -name '*.png' \) | parallel --tag -j 2 ocrmypdf.sh '{}'

답변2

따라서 user-ralfiedl의 지침에 따라 MacOSX의 최신 LSTM 기반 Tessearct 4.0에 다음 사항이 적용됩니다.

업데이트: 이 모든 것을 처음에 가고 싶었던 .profile 또는 .bashrc에 푸시하는 방법을 알아낼 수 있었습니다... 다음은 txt 파일에 대한 변수가 필요하지 않습니다.

function do_ocr () {
    #find . -name '*.pdf' -o -name '*.jpg' -o -name '*.tif' -o -name '*.png' -o -name '*.jpeg' -o -name '*.tiff'
    find_all_formats | parallel --tag -j 2 \
    ocrmypdf -l ori+por+srp+hin+chi_sim+spa+uzb_cyrl+mar+swa+ces+urd+nep+cat+mya+lit+dan+mlt+enm+bod+tir+tgl+tha+fas+hrv+ukr+lao+ben+eus+eng+dzo+nld+vie+ita+kir+pus+msa+heb+slv+kaz+rus+eng+vie+ukr+spa \
    --clean --deskew --rotate-pages --image-dpi 300 --jpeg-quality 75 --png-quality 75 \
    -i -f -O 2 --sidecar - --force-ocr '{}' '{}' --verbose 1

}

참고: Brew Install Tesseract 4.0과 같이 4.0용 각 훈련 세트를 수동으로 다시 빌드해야 합니다.4.0 TrainingData 설치 지침에 대한 Github 링크

업데이트: Tesseract 4.0용 Docker 파일이 있습니다. 언어 데이터와 MacOSX 단계별 설치 지침을 추가해야 합니다. 이를 통해 Java 8이 함께 설치되어 있고 ScrollViewer.jar 환경에 있는지 확인합니다. 이를 얻으면 위 기능을 사용하여 모든 언어를 "자동 감지"한 다음 가능하면 이미지를 OCR하고 PDF로 변환하고 콘텐츠의 사이드카 txt 파일(원래 언어)을 생성할 수 있습니다.

다음 단계는 언어 Office 문서를 가져와 번역하고, 기계 학습을 사용하여 텍스트 파일에 더 많은 데이터를 추가하여 이미지를 OCR할 수 있는 것을 만드는 것입니다.

관련 정보