summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick White <git@njw.name>2022-02-21 12:33:48 +0000
committerNick White <git@njw.name>2022-02-21 12:33:48 +0000
commit69ac99da02988ad2ed675570ccaa5ff7777f0279 (patch)
treeaac4a7b560d0f0e3ee79f8061c0ec74b6d00fb5b
parent066884ddf4a160baec7c8f3d0974d7aeca1eec6b (diff)
Ensure that no new console windows are opened on Windows when executing Tesseract
-rw-r--r--cmd/rescribe/main.go4
-rw-r--r--internal/pipeline/pipeline.go1
-rw-r--r--internal/pipeline/util.go16
-rw-r--r--internal/pipeline/util_windows.go16
4 files changed, 36 insertions, 1 deletions
diff --git a/cmd/rescribe/main.go b/cmd/rescribe/main.go
index 41dc83c..7db5e3e 100644
--- a/cmd/rescribe/main.go
+++ b/cmd/rescribe/main.go
@@ -428,7 +428,9 @@ func rmIfNotImage(f string) error {
}
func startProcess(ctx context.Context, logger log.Logger, tessCommand string, bookdir string, bookname string, trainingName string, savedir string, tessdir string) error {
- _, err := exec.Command(tessCommand, "--help").Output()
+ cmd := exec.Command(tessCommand, "--help")
+ pipeline.HideCmd(cmd)
+ _, err := cmd.Output()
if err != nil {
errmsg := "Error, Can't run Tesseract\n"
errmsg += "Ensure that Tesseract is installed and available, or don't use the -systess flag.\n"
diff --git a/internal/pipeline/pipeline.go b/internal/pipeline/pipeline.go
index b4a9d92..639bba1 100644
--- a/internal/pipeline/pipeline.go
+++ b/internal/pipeline/pipeline.go
@@ -310,6 +310,7 @@ func Ocr(training string, tesscmd string) func(context.Context, chan string, cha
logger.Println("OCRing", path)
name := strings.Replace(path, ".png", "", 1)
cmd := exec.Command(tesscmd, "-l", training, path, name, "-c", "tessedit_create_hocr=1", "-c", "hocr_font_info=0")
+ HideCmd(cmd)
var stdout, stderr bytes.Buffer
cmd.Stdout = &stdout
cmd.Stderr = &stderr
diff --git a/internal/pipeline/util.go b/internal/pipeline/util.go
new file mode 100644
index 0000000..092a9ee
--- /dev/null
+++ b/internal/pipeline/util.go
@@ -0,0 +1,16 @@
+// Copyright 2022 Nick White.
+// Use of this source code is governed by the GPLv3
+// license that can be found in the LICENSE file.
+
+// +build !windows
+
+package pipeline
+
+import (
+ "os/exec"
+)
+
+// HideCmd adds a flag to hide any console window from being
+// displayed, if necessary for the platform
+func HideCmd(cmd *exec.Cmd) {
+}
diff --git a/internal/pipeline/util_windows.go b/internal/pipeline/util_windows.go
new file mode 100644
index 0000000..08c321e
--- /dev/null
+++ b/internal/pipeline/util_windows.go
@@ -0,0 +1,16 @@
+// Copyright 2022 Nick White.
+// Use of this source code is governed by the GPLv3
+// license that can be found in the LICENSE file.
+
+package pipeline
+
+import (
+ "os/exec"
+ "syscall"
+)
+
+// HideCmd adds a flag to hide any console window from being
+// displayed, if necessary for the platform
+func HideCmd(cmd *exec.Cmd) {
+ cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
+}