Update CLI completions to match current options
Add new options: --mode, --ocr-engine, --rasterizer, --continue-on-soft-render-error, --tesseract-non-ocr-timeout, --tesseract-downsample-large-images, --tesseract-downsample-above, --unpaper-args (fish), --plugin (fish). Update --output-type to include 'auto' as default. Update --pdf-renderer to include 'fpdf2' and mark hocr as deprecated. Remove non-working options: --remove-background, --threshold.
This commit is contained in:
@@ -21,14 +21,13 @@ __ocrmypdf_arguments()
|
||||
--subject (set metadata)
|
||||
--keywords (set metadata)
|
||||
--rotate-pages (rotate pages to correct orientation)
|
||||
--remove-background (attempt to remove background from pages)
|
||||
--deskew (fix small horizontal alignment skew)
|
||||
--clean (clean document images before OCR)
|
||||
--clean-final (clean document images and keep result)
|
||||
--unpaper-args (a quoted string of arguments to pass to unpaper)
|
||||
--oversample (oversample images to this DPI)
|
||||
--remove-vectors (don\'t send vector objects to OCR)
|
||||
--threshold (threshold images before OCR)
|
||||
--mode (processing mode for pages with existing text)
|
||||
--force-ocr (OCR documents that already have printable text)
|
||||
--skip-text (skip OCR on any pages that already contain text)
|
||||
--redo-ocr (redo OCR on any pages that seem to have OCR already)
|
||||
@@ -42,9 +41,12 @@ __ocrmypdf_arguments()
|
||||
--pages (apply OCR to only the specified pages)
|
||||
--max-image-mpixels (image decompression bomb threshold)
|
||||
--pdf-renderer (select PDF renderer options)
|
||||
--ocr-engine (OCR engine to use)
|
||||
--rasterizer (PDF page rasterizer)
|
||||
--rotate-pages-threshold (page rotation confidence)
|
||||
--pdfa-image-compression (set PDF/A image compression options)
|
||||
--fast-web-view (if file size if above this amount in MB linearize PDF)
|
||||
--continue-on-soft-render-error (continue after recoverable render errors)
|
||||
--plugin (name of plugin to import)
|
||||
--keep-temporary-files (keep temporary files (debug)
|
||||
--tesseract-config (set custom tesseract config file)
|
||||
@@ -52,6 +54,10 @@ __ocrmypdf_arguments()
|
||||
--tesseract-oem (set tesseract --oem)
|
||||
--tesseract-thresholding (set tesseract image thresholding)
|
||||
--tesseract-timeout (maximum number of seconds to wait for OCR)
|
||||
--tesseract-non-ocr-timeout (maximum seconds for non-OCR operations)
|
||||
--tesseract-downsample-large-images (downsample large images before OCR)
|
||||
--no-tesseract-downsample-large-images (do not downsample large images)
|
||||
--tesseract-downsample-above (downsample images larger than this pixel size)
|
||||
--user-words (specify location of user words file)
|
||||
--user-patterns (specify location of user patterns file)
|
||||
--no-progress-bar (disable the progress bar)
|
||||
@@ -68,7 +74,8 @@ __ocrmypdf_arguments()
|
||||
|
||||
__ocrmypdf_output-type()
|
||||
{
|
||||
local choices="pdfa (output a PDF/A (default))
|
||||
local choices="auto (best-effort PDF/A without Ghostscript (default))
|
||||
pdfa (output a PDF/A-2b)
|
||||
pdf (output a standard PDF)
|
||||
pdfa-1 (output a PDF/A-1b)
|
||||
pdfa-2 (output a PDF/A-2b)
|
||||
@@ -114,10 +121,11 @@ __ocrmypdf_optimize()
|
||||
|
||||
__ocrmypdf_pdf-renderer()
|
||||
{
|
||||
local choices="auto (auto select PDF renderer)
|
||||
hocr (use hOCR renderer)
|
||||
hocrdebug (uses hOCR renderer in debug mode, showing recognized text)
|
||||
sandwich (use sandwich renderer)"
|
||||
local choices="auto (auto select PDF renderer, uses fpdf2)
|
||||
fpdf2 (use fpdf2 renderer with full language support)
|
||||
sandwich (use sandwich renderer)
|
||||
hocr (use hOCR renderer - deprecated)
|
||||
hocrdebug (uses hOCR renderer in debug mode - deprecated)"
|
||||
|
||||
COMPREPLY=( $( compgen -W "$choices" -- "$cur") )
|
||||
|
||||
@@ -210,6 +218,46 @@ UseDeviceIndependentColor (convert with device independent color)"
|
||||
fi
|
||||
}
|
||||
|
||||
__ocrmypdf_mode()
|
||||
{
|
||||
local choices="default (error if text is found)
|
||||
force (rasterize all content and run OCR)
|
||||
skip (skip pages with existing text)
|
||||
redo (re-OCR pages, replacing old invisible text)"
|
||||
|
||||
COMPREPLY=( $( compgen -W "$choices" -- "$cur") )
|
||||
# Remove description if only one completion exists
|
||||
if [[ ${#COMPREPLY[*]} -eq 1 ]]; then
|
||||
COMPREPLY=( ${COMPREPLY[0]%% *} )
|
||||
fi
|
||||
}
|
||||
|
||||
__ocrmypdf_ocr-engine()
|
||||
{
|
||||
local choices="auto (select best available engine)
|
||||
tesseract (use Tesseract OCR)
|
||||
none (skip OCR entirely)"
|
||||
|
||||
COMPREPLY=( $( compgen -W "$choices" -- "$cur") )
|
||||
# Remove description if only one completion exists
|
||||
if [[ ${#COMPREPLY[*]} -eq 1 ]]; then
|
||||
COMPREPLY=( ${COMPREPLY[0]%% *} )
|
||||
fi
|
||||
}
|
||||
|
||||
__ocrmypdf_rasterizer()
|
||||
{
|
||||
local choices="auto (prefer pypdfium, fall back to Ghostscript)
|
||||
ghostscript (use Ghostscript rasterizer)
|
||||
pypdfium (use pypdfium rasterizer - faster)"
|
||||
|
||||
COMPREPLY=( $( compgen -W "$choices" -- "$cur") )
|
||||
# Remove description if only one completion exists
|
||||
if [[ ${#COMPREPLY[*]} -eq 1 ]]; then
|
||||
COMPREPLY=( ${COMPREPLY[0]%% *} )
|
||||
fi
|
||||
}
|
||||
|
||||
__ocrmypdf_check_previous()
|
||||
{
|
||||
case $prev in
|
||||
@@ -241,6 +289,18 @@ __ocrmypdf_check_previous()
|
||||
__ocrmypdf_pdf-renderer
|
||||
return 0
|
||||
;;
|
||||
-m|--mode)
|
||||
__ocrmypdf_mode
|
||||
return 0
|
||||
;;
|
||||
--ocr-engine)
|
||||
__ocrmypdf_ocr-engine
|
||||
return 0
|
||||
;;
|
||||
--rasterizer)
|
||||
__ocrmypdf_rasterizer
|
||||
return 0
|
||||
;;
|
||||
--pdfa-image-compression)
|
||||
__ocrmypdf_pdfa-image-compression
|
||||
return 0
|
||||
@@ -260,7 +320,8 @@ __ocrmypdf_check_previous()
|
||||
|
||||
--title|--author|--subject|--keywords|--unpaper-args|--pages|--plugin|\
|
||||
--jpeg-quality|--png-quality|--image-dpi|--oversample|--skip-big|--max-image-mpixels|\
|
||||
--tesseract-timeout|--rotate-pages-threshold|--fast-web-view)
|
||||
--tesseract-timeout|--tesseract-non-ocr-timeout|--tesseract-downsample-above|\
|
||||
--rotate-pages-threshold|--fast-web-view)
|
||||
# argument required but no completions available
|
||||
return 0
|
||||
;;
|
||||
|
||||
@@ -11,8 +11,16 @@ complete -c ocrmypdf -s r -l rotate-pages -d "rotate pages to correct orientatio
|
||||
complete -c ocrmypdf -s d -l deskew -d "fix small horizontal alignment skew"
|
||||
complete -c ocrmypdf -s c -l clean -d "clean document images before OCR"
|
||||
complete -c ocrmypdf -s i -l clean-final -d "clean document images and keep result"
|
||||
complete -c ocrmypdf -x -l unpaper-args -d "quoted string of arguments to pass to unpaper"
|
||||
complete -c ocrmypdf -l remove-vectors -d "don't send vector objects to OCR"
|
||||
|
||||
function __fish_ocrmypdf_mode
|
||||
echo -e "default\t"(_ "error if text is found")
|
||||
echo -e "force\t"(_ "rasterize all content and run OCR")
|
||||
echo -e "skip\t"(_ "skip pages with existing text")
|
||||
echo -e "redo\t"(_ "re-OCR pages, replacing old invisible text")
|
||||
end
|
||||
complete -c ocrmypdf -x -s m -l mode -a '(__fish_ocrmypdf_mode)' -d "processing mode for pages with existing text"
|
||||
complete -c ocrmypdf -s f -l force-ocr -d "OCR documents that already have printable text"
|
||||
complete -c ocrmypdf -s s -l skip-text -d "skip OCR on any pages that already contain text"
|
||||
complete -c ocrmypdf -l redo-ocr -d "redo OCR on any pages that seem to have OCR already"
|
||||
@@ -32,7 +40,8 @@ complete -c ocrmypdf -x -s l -l language -a '(__fish_ocrmypdf_languages)' -d lan
|
||||
complete -c ocrmypdf -x -l image-dpi -d "assume this DPI if input image DPI is unknown"
|
||||
|
||||
function __fish_ocrmypdf_output_type
|
||||
echo -e "pdfa\t"(_ "output a PDF/A (default)")
|
||||
echo -e "auto\t"(_ "best-effort PDF/A without requiring Ghostscript (default)")
|
||||
echo -e "pdfa\t"(_ "output a PDF/A-2b")
|
||||
echo -e "pdf\t"(_ "output a standard PDF")
|
||||
echo -e "pdfa-1\t"(_ "output a PDF/A-1b")
|
||||
echo -e "pdfa-2\t"(_ "output a PDF/A-2b")
|
||||
@@ -42,13 +51,28 @@ end
|
||||
complete -c ocrmypdf -x -l output-type -a '(__fish_ocrmypdf_output_type)' -d "select PDF output options"
|
||||
|
||||
function __fish_ocrmypdf_pdf_renderer
|
||||
echo -e "auto\t"(_ "auto select PDF renderer")
|
||||
echo -e "hocr\t"(_ "use hOCR renderer")
|
||||
echo -e "hocrdebug\t"(_ "uses hOCR renderer in debug mode, showing recognized text")
|
||||
echo -e "auto\t"(_ "auto select PDF renderer (default, uses fpdf2)")
|
||||
echo -e "fpdf2\t"(_ "use fpdf2 renderer with full language support")
|
||||
echo -e "sandwich\t"(_ "use sandwich renderer")
|
||||
echo -e "hocr\t"(_ "use hOCR renderer (deprecated)")
|
||||
echo -e "hocrdebug\t"(_ "uses hOCR renderer in debug mode (deprecated)")
|
||||
end
|
||||
complete -c ocrmypdf -x -l pdf-renderer -a '(__fish_ocrmypdf_pdf_renderer)' -d "select PDF renderer options"
|
||||
|
||||
function __fish_ocrmypdf_ocr_engine
|
||||
echo -e "auto\t"(_ "select best available engine (default)")
|
||||
echo -e "tesseract\t"(_ "use Tesseract OCR")
|
||||
echo -e "none\t"(_ "skip OCR entirely")
|
||||
end
|
||||
complete -c ocrmypdf -x -l ocr-engine -a '(__fish_ocrmypdf_ocr_engine)' -d "OCR engine to use"
|
||||
|
||||
function __fish_ocrmypdf_rasterizer
|
||||
echo -e "auto\t"(_ "prefer pypdfium, fall back to Ghostscript (default)")
|
||||
echo -e "ghostscript\t"(_ "use Ghostscript rasterizer")
|
||||
echo -e "pypdfium\t"(_ "use pypdfium rasterizer (faster)")
|
||||
end
|
||||
complete -c ocrmypdf -x -l rasterizer -a '(__fish_ocrmypdf_rasterizer)' -d "PDF page rasterizer"
|
||||
|
||||
function __fish_ocrmypdf_optimize
|
||||
echo -e "0\t"(_ "do not optimize")
|
||||
echo -e "1\t"(_ "do safe, lossless optimizations (default)")
|
||||
@@ -124,11 +148,17 @@ end
|
||||
complete -c ocrmypdf -x -l tesseract-thresholding -a '(__fish_ocrmypdf_tesseract_thresholding)' -d "set tesseract thresholding method (needs Tesseract 5.x)"
|
||||
|
||||
complete -c ocrmypdf -x -l tesseract-timeout -d "maximum number of seconds to wait for OCR"
|
||||
complete -c ocrmypdf -x -l tesseract-non-ocr-timeout -d "maximum seconds to wait for non-OCR operations"
|
||||
complete -c ocrmypdf -l tesseract-downsample-large-images -d "downsample large images before OCR"
|
||||
complete -c ocrmypdf -l no-tesseract-downsample-large-images -d "do not downsample large images"
|
||||
complete -c ocrmypdf -x -l tesseract-downsample-above -d "downsample images larger than this pixel size"
|
||||
complete -c ocrmypdf -x -l rotate-pages-threshold -d "page rotation confidence"
|
||||
|
||||
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 -l fast-web-view -d "if file size if above this amount in MB, linearize PDF"
|
||||
complete -c ocrmypdf -l continue-on-soft-render-error -d "continue processing after recoverable render errors"
|
||||
complete -c ocrmypdf -r -l plugin -d "name of plugin to import"
|
||||
|
||||
function __fish_ocrmypdf_color_conversion_strategy
|
||||
echo -e "LeaveColorUnchanged\t"(_ "do not convert color spaces (default)")
|
||||
|
||||
Reference in New Issue
Block a user