all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Andy Tai <atai@atai.org>
To: Jelle Licht <jlicht@posteo.net>
Cc: 46376@debbugs.gnu.org
Subject: [bug#46376] [PATCH] gnu: tesseract-ocr: update to 4.1.1)
Date: Wed, 10 Feb 2021 16:00:54 -0800	[thread overview]
Message-ID: <CAJsg1E8qM-_eRdQy4OBFQMWDkw68gzPv_2xiDrNt0VTdHyYYGQ@mail.gmail.com> (raw)
In-Reply-To: <CAJsg1E9H14+5jU674DOZW9g=HfB0cmAEa8KgGiDoo8ga+7JKOg@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2010 bytes --]

updated patch:

unit tests run, with some failures due to illegal instruction and
others succeed, but these requires first manual downloading of the
training data; I am not sure how that can be done as part of Guix
package definition.  Help on that is much appreciated.  (details
commented in the patch)

On Tue, Feb 9, 2021 at 11:52 PM Andy Tai <atai@atai.org> wrote:
>
> updated patch, now tests build in parallel... the build order has to
> be explicitly set to make the training target built first
>
> also added some other optional dependencies; built in a GuixSD VM to
> ensure no dependency on non-Guix tools from host
>
> test run is disabled for now
>
> On Tue, Feb 9, 2021 at 2:43 PM Jelle Licht <jlicht@posteo.net> wrote:
> >
> > Hi Andy,
> >
> > Andy Tai <atai@atai.org> writes:
> >
> > > Hi, I updated the patch to only build in serial, with "-j 1"
> > >
> > > and with this, everything, including tests, builds successfully.
> >
> > No such luck, for me at least. Are you certain you got it to build on
> > your end? Could you try with `--check`?
> >
> > I've had to work out the following things:
> >
> > - Patched out "<tesseract/baseapi.h>" and "<tesseract/helpers.h>" to
> >   refer to "baseapi.h" and "helpers.h" in "unittest/pagesegmode_test.cc".
> >
> > - Make sure the check phase takes place after running "make training" in
> >   a phase.
> >
> > I still ended up with several failing tests, courtesy of it running
> > unsupported instructions on my cpu (educated guess: avx etc). Nothing
> > comes easy, I guess.
> >
> > Thanks,
> >  - Jelle
>
>
>
> --
> Andy Tai, atai@atai.org, Skype: licheng.tai, Line: andy_tai, WeChat: andytai1010
> Year 2021 民國110年
> 自動的精神力是信仰與覺悟
> 自動的行為力是勞動與技能



-- 
Andy Tai, atai@atai.org, Skype: licheng.tai, Line: andy_tai, WeChat: andytai1010
Year 2021 民國110年
自動的精神力是信仰與覺悟
自動的行為力是勞動與技能

[-- Attachment #2: 0001-gnu-tesseract-ocr-Update-to-4.1.1.patch --]
[-- Type: text/x-patch, Size: 6058 bytes --]

From ead97cb03c783bf6e941a93ca4f2a6c669451656 Mon Sep 17 00:00:00 2001
From: Andy Tai <atai@atai.org>
Date: Wed, 10 Feb 2021 15:56:48 -0800
Subject: [PATCH] gnu: tesseract-ocr: Update to 4.1.1)

* gnu/packages/ocr.scm (tesseract-ocr): Update to 4.1.1
---
 gnu/packages/ocr.scm | 85 ++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 79 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/ocr.scm b/gnu/packages/ocr.scm
index dc4930918a..962492ebb2 100644
--- a/gnu/packages/ocr.scm
+++ b/gnu/packages/ocr.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Alex Vong <alexvong1995@gmail.com>
+;;; Copyright © 2021 Andy Tai <atai@atai.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,8 +27,18 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages backup)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages wget)
+  #:use-module (gnu packages xml)
   #:use-module (gnu packages image))
 
 (define-public ocrad
@@ -52,25 +63,87 @@ it produces text in 8-bit or UTF-8 formats.")
     (license license:gpl3+)))
 
 (define-public tesseract-ocr
+  ;; some useful commits beyond last official stable release in release branch
+  (let ((commit "97079fa353557af6df86fd20b5d2e0dff5d8d5df")
+        (revision "1"))
   (package
     (name "tesseract-ocr")
-    (version "3.04.01")
+    (version (git-version "4.1.1" revision commit))
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
               (url "https://github.com/tesseract-ocr/tesseract")
-              (commit version)))
+              (commit commit)
+              ;; source git repo with submodules; ensure they are fetched
+              (recursive? #t)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0h1x4z1h86n2gwknd0wck6gykkp99bmm02lg4a47a698g4az6ybv"))))
+        (base32 "0axwla82fpzp86lc553wp3hk0fz5dylw4as0jbf4hkqcyajlbzp4"))))
     (build-system gnu-build-system)
     (inputs
-     `(("leptonica" ,leptonica)))
+     `(  ("cairo" ,cairo)
+         ("icu" ,icu4c)
+         ("leptonica" ,leptonica)
+         ("pango" ,pango)
+         ("wget" ,wget)  ;; for downloading training data to run unit tests
+         ))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("autoconf-archive" ,autoconf-archive)
+       ("automake" ,automake)
+       ("googletest" ,googletest)
+       ("libarchive" ,libarchive)
+       ("libcurl" ,curl)
+       ("libtool" ,libtool)
+       ("libtiff" ,libtiff)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)
+       ("xsltproc" ,libxslt)))
     (arguments
      '(#:configure-flags
        (let ((leptonica (assoc-ref %build-inputs "leptonica")))
-         (list (string-append "LIBLEPT_HEADERSDIR=" leptonica "/include")))))
+         (list (string-append "LIBLEPT_HEADERSDIR=" leptonica "/include")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'disable-failing-tests-and-setup
+           (lambda _
+             ;; pagesegmode_test.cc fails to build, patch it
+             (substitute* "unittest/pagesegmode_test.cc"
+               (("<tesseract/baseapi.h>") "\"baseapi.h\""))
+             (substitute* "unittest/pagesegmode_test.cc"
+               (("<tesseract/helpers.h>") "\"helpers.h\""))
+             #t))
+         (add-before 'build 'build-training
+           (lambda _
+             (invoke "make" "-j" (number->string (parallel-job-count)) "training")))
+         (add-after 'install 'install-training
+           (lambda _
+             (invoke "make" "training-install")
+             #t))
+         (replace 'check
+           (lambda _
+             (status:exit-val (system* "make" "check")) ;;exit code ignored
+             #t))  ;; failed tests will not stop the whole instal process
+         (add-before 'check 'pre-check-setup
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((tessdata_prefix   "/tmp") ;; (tmpnam))
+                   (wget   (which "wget")))
+               ;;TESSDATA_PREFIX environment var shall be parent directory of tessdata directory
+               ;; note for now, to run tests successfully you need to manually download eng.traineddata
+               ;; to /tmp/tessdata first
+                 (if tessdata_prefix
+                   (let ((data_dir (string-append tessdata_prefix "/tessdata")))
+                     (setenv "TESSDATA_PREFIX" tessdata_prefix)
+                     (format #t  "TESSDATA_PREFIX data dir: ~a  " data_dir)
+                     (mkdir-p data_dir)  ; code below shows attempt to download; not working now
+                     ;;(with-directory-excursion data_dir
+                     ;;  (begin
+                     ;;    (invoke wget "-t" "5" "https://github.com/tesseract-ocr/tessdata/blob/master/eng.traineddata")
+                     ;;))
+                   )
+                   (format #t "No TESSDATA_PREFIX found "))
+             #t))))))
     (home-page "https://github.com/tesseract-ocr/tesseract")
     (synopsis "Optical character recognition engine")
     (description
@@ -79,7 +152,7 @@ high accuracy.  It supports many languages, output text formatting, hOCR
 positional information and page layout analysis.  Several image formats are
 supported through the Leptonica library.  It can also detect whether text is
 monospaced or proportional.")
-    (license license:asl2.0)))
+    (license license:asl2.0))))
 
 (define-public zinnia
   (let* ((commit "581faa8f6f15e4a7b21964be3a5ec36265c80e5b")
-- 
2.30.0


  reply	other threads:[~2021-02-11  0:02 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-08  6:32 [bug#46377] [PATCH] gnu: tesseract-ocr: update to 4.1.1 Andy Tai
2021-02-08  6:42 ` [bug#46376] " Andy Tai
     [not found]   ` <handler.46376.B.161276666727875.ack@debbugs.gnu.org>
2021-02-08  6:51     ` [bug#46376] [PATCH] gnu: tesseract-ocr: update to 4.1.1) Andy Tai
2021-02-08 21:36       ` Jelle Licht
2021-02-08 23:14         ` Andy Tai
2021-02-09 11:56           ` Jelle Licht
2021-02-09 16:22             ` Andy Tai
2021-02-09 22:43               ` Jelle Licht
2021-02-09 22:53                 ` Andy Tai
2021-02-10  7:52                 ` Andy Tai
2021-02-11  0:00                   ` Andy Tai [this message]
2021-02-11 10:48                     ` Jelle Licht
2021-02-11 18:34                       ` Andy Tai
2021-02-13 14:34                         ` bug#46376: " Jelle Licht
2021-02-13 20:37                           ` [bug#46376] " Andy Tai
     [not found] ` <handler.46377.B.161277624811801.ack@debbugs.gnu.org>
2021-02-08 17:53   ` [bug#46377] Acknowledgement ([PATCH] " Andy Tai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAJsg1E8qM-_eRdQy4OBFQMWDkw68gzPv_2xiDrNt0VTdHyYYGQ@mail.gmail.com \
    --to=atai@atai.org \
    --cc=46376@debbugs.gnu.org \
    --cc=jlicht@posteo.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.