diff --git a/misc/completion/ocrmypdf.bash b/misc/completion/ocrmypdf.bash index 1b550da9..64df612d 100644 --- a/misc/completion/ocrmypdf.bash +++ b/misc/completion/ocrmypdf.bash @@ -76,7 +76,7 @@ _ocrmypdf() --max-image-mpixels --tesseract-config --tesseract-pagesegmode --help --tesseract-oem --pdf-renderer --tesseract-timeout --rotate-pages-threshold --pdfa-image-compression --user-words - --user-patterns --keep-temporary-files --flowchart --output-type' \ + --user-patterns --keep-temporary-files --output-type' \ -- "$cur" ) ) return else diff --git a/misc/completion/ocrmypdf.fish b/misc/completion/ocrmypdf.fish index 24883be1..645f6f98 100644 --- a/misc/completion/ocrmypdf.fish +++ b/misc/completion/ocrmypdf.fish @@ -1,8 +1,8 @@ -complete -c ocrmypdf -l version -complete -c ocrmypdf -l help +complete -c ocrmypdf -x -n '__fish_is_first_arg' -l version +complete -c ocrmypdf -x -n '__fish_is_first_arg' -s h -s "?" -l help -complete -c ocrmypdf -l sidecar -r -d "write OCR to text file" -complete -c ocrmypdf -s q -l quiet +complete -c ocrmypdf -r -l sidecar -d "write OCR to text file" +complete -c ocrmypdf -x -s q -l quiet complete -c ocrmypdf -s r -l rotate-pages -d "rotate pages to correct orientation" complete -c ocrmypdf -s d -l deskew -d "fix small horizontal alignment skew" @@ -17,8 +17,14 @@ complete -c ocrmypdf -l redo-ocr -d "redo OCR on any pages that seem to have OCR complete -c ocrmypdf -s k -l keep-temporary-files -d "keep temporary files (debug)" -complete -c ocrmypdf -x -s l -l language -d 'language' -complete -c ocrmypdf -x -s l -l language -a '(tesseract --list-langs)' +function __fish_ocrmypdf_languages + set langs (tesseract --list-langs ^/dev/null) + set arr (string split '\n' $langs) + for lang in $arr[2..-1] + echo $lang + end +end +complete -c ocrmypdf -x -s l -l language -a '(__fish_ocrmypdf_languages)' -d "language" complete -c ocrmypdf -x -l image-dpi -d "assume this DPI if input image DPI is unknown" @@ -36,7 +42,7 @@ function __fish_ocrmypdf_pdf_renderer echo -e "hocr\t"(_ "use hocr renderer") echo -e "sandwich\t"(_ "use sandwich renderer") end -complete -c ocrmypdf -x -l pdf-render -a '(__fish_ocrmypdf_pdf_renderer)' -d "select PDF renderer options" +complete -c ocrmypdf -x -l pdf-renderer -a '(__fish_ocrmypdf_pdf_renderer)' -d "select PDF renderer options" function __fish_ocrmypdf_optimize echo -e "0\t"(_ "do not optimize") @@ -53,6 +59,13 @@ function __fish_ocrmypdf_verbose end complete -c ocrmypdf -x -s v -l verbose -a '(__fish_ocrmypdf_verbose)' -d "set verbosity level" +function __fish_ocrmypdf_pdfa_compression + echo -e "auto\t"(_ "let Ghostscript decide how to compress images") + echo -e "jpeg\t"(_ "convert color and grayscale images to JPEG") + echo -e "lossless\t"(_ "convert color and grayscale images to lossless (PNG)") +end +complete -c ocrmypdf -x -l pdfa-image-compression -a '(__fish_ocrmypdf_pdfa_compression)' -d "set PDF/A image compression options" + complete -c ocrmypdf -x -s j -l jobs -d "how many worker processes to use" complete -c ocrmypdf -x -l title -d "set metadata" complete -c ocrmypdf -x -l author -d "set metadata" @@ -66,10 +79,36 @@ complete -c ocrmypdf -x -l png-quality -d "PNG quality [0..100]" complete -c ocrmypdf -x -l jbig2-lossy -d "enable lossy JBIG2 (see docs)" complete -c ocrmypdf -x -l max-image-mpixels -d "image decompression bomb threshold" complete -c ocrmypdf -x -l tesseract-config -d "set custom tesseract config file" -complete -c ocrmypdf -x -l tesseract-pagesegmode -d "set tesseract --psm" -complete -c ocrmypdf -x -l tesseract-oem -d "set tesseract --oem" + +function __fish_ocrmypdf_tesseract_pagesegmode + echo -e "0\t"(_ "orientation and script detection (OSD) only") + echo -e "1\t"(_ "automatic page segmentation with OSD") + echo -e "2\t"(_ "automatic page segmentation, but no OSD, or OCR") + echo -e "3\t"(_ "fully automatic page segmentation, but no OSD (default)") + echo -e "4\t"(_ "assume a single column of text of variable sizes") + echo -e "5\t"(_ "assume a single uniform block of vertically aligned text") + echo -e "6\t"(_ "assume a single uniform block of text") + echo -e "7\t"(_ "treat the image as a single text line") + echo -e "8\t"(_ "treat the image as a single word") + echo -e "9\t"(_ "treat the image as a single word in a circle") + echo -e "10\t"(_ "treat the image as a single character") + echo -e "11\t"(_ "sparse text - find as much text as possible in no particular order") + echo -e "12\t"(_ "sparse text with OSD") + echo -e "13\t"(_ "raw line - treat the image as a single text line") +end +complete -c ocrmypdf -x -l tesseract-pagesegmode -a '(__fish_ocrmypdf_tesseract_pagesegmode)' -d "set tesseract --psm" + +function __fish_ocrmypdf_tesseract_oem + echo -e "0\t"(_ "legacy engine only") + echo -e "1\t"(_ "neural nets LSTM engine only") + echo -e "2\t"(_ "legacy + LSTM engines") + echo -e "3\t"(_ "default, based on what is available") +end +complete -c ocrmypdf -x -l tesseract-oem -a '(__fish_ocrmypdf_tesseract_oem)' -d "set tesseract --oem" complete -c ocrmypdf -x -l tesseract-timeout -d "maximum number of seconds to wait for OCR" complete -c ocrmypdf -x -l rotate-pages-threshold -d "page rotation confidence" -complete -c ocrmypdf -x -l pdfa-image-compression -a 'auto jpeg lossless' -d "set PDF/A image compression options" + +complete -c ocrmypdf -r -l user-words -d "specify location of user words file" +complete -c ocrmypdf -r -l user-patterns -d "specify location of user patterns file" complete -c ocrmypdf -x -a "(__fish_complete_suffix .pdf)"