Skip to content

Commit

Permalink
Add zsh completion, fix tesseract-ocr#4058
Browse files Browse the repository at this point in the history
  • Loading branch information
Freed-Wu committed May 15, 2023
1 parent 9422915 commit a5029f0
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 1 deletion.
2 changes: 2 additions & 0 deletions CMakeLists.txt
Expand Up @@ -961,6 +961,8 @@ if(INSTALL_CONFIGS)
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/tessdata/configs)
install(FILES ${TESSERACT_TESSCONFIGS}
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/tessdata/tessconfigs)
install(FILES contrib/completions/zsh/_tesseract
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/zsh/site-functions)
endif()

# ##############################################################################
Expand Down
2 changes: 1 addition & 1 deletion Makefile.am
Expand Up @@ -5,7 +5,7 @@ ACLOCAL_AMFLAGS = -I m4

CLEANFILES =

SUBDIRS = . tessdata
SUBDIRS = . tessdata contrib

EXTRA_DIST = README.md LICENSE
EXTRA_DIST += aclocal.m4 config configure.ac autogen.sh
Expand Down
4 changes: 4 additions & 0 deletions contrib/Makefile.am
@@ -0,0 +1,4 @@
zshcompletiondir = @datadir@/zsh/site-functions
zshcompletion_DATA = completions/zsh/_tesseract

EXTRA_DIST = $(zshcompletion_DATA)
45 changes: 45 additions & 0 deletions contrib/completions/zsh/_tesseract
@@ -0,0 +1,45 @@
#compdef tesseract

local psm=(
'0\:Orientation\ and\ script\ detection\ \(OSD\)\ only'
'1\:Automatic\ page\ segmentation\ with\ OSD'
'2\:Automatic\ page\ segmentation,\ but\ no\ OSD,\ or\ OCR\ \(not\ implemented\)'
'3\:Fully\ automatic\ page\ segmentation,\ but\ no\ OSD\ \(Default\)'
'4\:Assume\ a\ single\ column\ of\ text\ of\ variable\ sizes'
'5\:Assume\ a\ single\ uniform\ block\ of\ vertically\ aligned\ text'
'6\:Assume\ a\ single\ uniform\ block\ of\ text'
'7\:Treat\ the\ image\ as\ a\ single\ text\ line'
'8\:Treat\ the\ image\ as\ a\ single\ word'
'9\:Treat\ the\ image\ as\ a\ single\ word\ in\ a\ circle'
'10\:Treat\ the\ image\ as\ a\ single\ character'
'11\:Sparse\ text.\ Find\ as\ much\ text\ as\ possible\ in\ no\ particular\ order'
'12\:Sparse\ text\ with\ OSD'
'13\:Raw\ line.\ Treat\ the\ image\ as\ a\ single\ text\ line,\ bypassing\ hacks\ that\ are\ Tesseract-specific'
)
local oem=(
'0\:Legacy\ engine\ only'
'1\:Neural\ nets\ LSTM\ engine\ only'
'2\:Legacy\ +\ LSTM\ engines'
'3\:Default,\ based\ on\ what\ is\ available'
)
local options=(
"(- : *)"{-h,--help}"[Show minimal help message]"
"(- : *)"--help-extra"[Show extra help for advanced users]"
"(- : *)"--help-psm"[Show page segmentation modes]"
"(- : *)"--help-oem"[Show OCR Engine modes]"
"(- : *)"{-v,--version}"[Show version information]"
"(- : *)"--list-langs"[List available languages for tesseract engine]"
"(- : *)"--print-fonts-table"[Print tesseract fonts table]"
"(- : *)"--print-parameters"[Print tesseract parameters]"
--tessdata-dir"[Specify the location of tessdata path]: :_dirs"
--user-words"[Specify the location of user words file]: :_files"
--user-patterns"[Specify the location of user patterns file]: :_files"
--dpi"[Specify DPI for input image]:VALUE"
--loglevel"[Specify logging level]:LEVEL:(ALL TRACE DEBUG INFO WARN ERROR FATAL OFF)"
-l"[Specify language(s) used for OCR]:LANG:($(tesseract --list-langs | tail -n+2))"
'*'-c"[Set value for config variables]:VAR=VALUE"
--psm"[Specify page segmentation mode]:Page segmentation mode:(($psm))"
--oem"[Specify OCR Engine mode]:OCR Engine mode:(($oem))"
)

_arguments -s -S $options ':imagename:_files' ':outputbase:_files' '*:config:_files'

0 comments on commit a5029f0

Please sign in to comment.