From 68491d47f09d65afb2d97c348600f8909848f856 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Wed, 18 Jan 2023 00:22:24 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20macOS=20=E7=AB=AF=20Tesseract=20OCR=20?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E5=90=8E=E4=B8=8D=E8=AF=86=E5=88=AB=20https:?= =?UTF-8?q?//github.com/siyuan-note/siyuan/issues/7107?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/util/tesseract.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/kernel/util/tesseract.go b/kernel/util/tesseract.go index 2b319b2e3..6f4d9ab00 100644 --- a/kernel/util/tesseract.go +++ b/kernel/util/tesseract.go @@ -33,6 +33,7 @@ import ( ) var ( + TesseractBin = "tesseract" TesseractEnabled bool AssetsTexts = map[string]string{} AssetsTextsLock = sync.Mutex{} @@ -74,7 +75,7 @@ func Tesseract(imgAbsPath string) string { ctx, cancel := context.WithTimeout(context.Background(), 7*time.Second) defer cancel() - cmd := exec.CommandContext(ctx, "tesseract", "-c", "debug_file=/dev/null", imgAbsPath, "stdout", "-l", strings.Join(TesseractLangs, "+")) + cmd := exec.CommandContext(ctx, TesseractBin, "-c", "debug_file=/dev/null", imgAbsPath, "stdout", "-l", strings.Join(TesseractLangs, "+")) gulu.CmdAttr(cmd) output, err := cmd.CombinedOutput() if ctx.Err() == context.DeadlineExceeded { @@ -141,14 +142,18 @@ func getTesseractVer() (ret string) { return } - cmd := exec.Command("tesseract", "--version") + cmd := exec.Command(TesseractBin, "--version") gulu.CmdAttr(cmd) - logging.LogInfof("os env [%s]", os.Environ()) - logging.LogInfof("cmd env [%s]", cmd.Environ()) - cmd.Env = os.Environ() data, err := cmd.CombinedOutput() if nil != err { - logging.LogErrorf("get tesseract version failed: %s", err) + if strings.Contains(err.Error(), "executable file not found") { + TesseractBin = "/usr/local/bin/tesseract" + cmd = exec.Command(TesseractBin, "--version") + gulu.CmdAttr(cmd) + data, err = cmd.CombinedOutput() + } + } + if nil != err { return } logging.LogInfof("tesseract version output [%s]", string(data)) @@ -169,7 +174,7 @@ func getTesseractLangs() (ret []string) { return nil } - cmd := exec.Command("tesseract", "--list-langs") + cmd := exec.Command(TesseractBin, "--list-langs") gulu.CmdAttr(cmd) data, err := cmd.CombinedOutput() if nil != err {