summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd/rescribe/gui.go10
-rw-r--r--cmd/rescribe/main.go19
2 files changed, 21 insertions, 8 deletions
diff --git a/cmd/rescribe/gui.go b/cmd/rescribe/gui.go
index 92d8f5b..f4ac9bd 100644
--- a/cmd/rescribe/gui.go
+++ b/cmd/rescribe/gui.go
@@ -380,11 +380,13 @@ func startGui(log log.Logger, cmd string, training string, tessdir string) error
progressBar.SetValue(0.1)
if strings.HasSuffix(dir.Text, ".pdf") && !f.IsDir() {
- bookdir, err = extractPdfImgs(bookdir)
+ bookdir, err = extractPdfImgs(ctx, bookdir)
if err != nil {
- msg := fmt.Sprintf("Error opening PDF: %v\n", bookdir, err)
- dialog.ShowError(errors.New(msg), myWindow)
- fmt.Fprintf(os.Stderr, msg)
+ if !strings.HasSuffix(err.Error(), "context canceled") {
+ msg := fmt.Sprintf("Error opening PDF %s: %v\n", bookdir, err)
+ dialog.ShowError(errors.New(msg), myWindow)
+ fmt.Fprintf(os.Stderr, msg)
+ }
progressBar.SetValue(0.0)
gobtn.SetText("Process OCR")
diff --git a/cmd/rescribe/main.go b/cmd/rescribe/main.go
index d4acfc1..41dc83c 100644
--- a/cmd/rescribe/main.go
+++ b/cmd/rescribe/main.go
@@ -264,13 +264,15 @@ These training files are included in rescribe, and are always available:
log.Fatalln("Error opening book file/dir:", err)
}
+ var ctx context.Context
+
// try opening as a PDF, and extracting
if !fi.IsDir() {
if flag.NArg() < 2 {
savedir = strings.TrimSuffix(bookdir, ".pdf")
}
- bookdir, err = extractPdfImgs(bookdir)
+ bookdir, err = extractPdfImgs(ctx, bookdir)
if err != nil {
log.Fatalln("Error opening file as PDF:", err)
}
@@ -285,8 +287,6 @@ These training files are included in rescribe, and are always available:
ispdf = true
}
- var ctx context.Context
-
err = startProcess(ctx, *verboselog, tessCommand, bookdir, bookname, trainingName, savedir, tessdir)
if err != nil {
log.Fatalln(err)
@@ -306,7 +306,7 @@ These training files are included in rescribe, and are always available:
// extractPdfImgs extracts all images embedded in a PDF to a
// temporary directory, which is returned on success.
-func extractPdfImgs(path string) (string, error) {
+func extractPdfImgs(ctx context.Context, path string) (string, error) {
defer func() {
// unfortunately the pdf library will panic if it sees an encoding
// it can't decode, so recover from that and give a warning
@@ -334,6 +334,11 @@ func extractPdfImgs(path string) (string, error) {
}
for pgnum := 1; pgnum <= p.NumPage(); pgnum++ {
+ select {
+ case <-ctx.Done():
+ return "", ctx.Err()
+ default:
+ }
if p.Page(pgnum).V.IsNull() {
continue
}
@@ -376,6 +381,12 @@ func extractPdfImgs(path string) (string, error) {
}
// TODO: check for places where there are multiple images per page, and only keep largest ones where that's the case
+ select {
+ case <-ctx.Done():
+ return "", ctx.Err()
+ default:
+ }
+
return tempdir, nil
}