summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorGuillaume Le Vaillant <glv@posteo.net>2020-11-29 14:29:45 +0100
committerGuillaume Le Vaillant <glv@posteo.net>2020-11-29 14:36:57 +0100
commit7c2e67400ffaef8eb6f30ef7126c976ee3d7e36c (patch)
tree2b68e6b2b94b55f006cde59a9755a4acacd722a0 /gnu
parente7fb2c6e7b1caa90bd346292b1325ab8f0d8a4d7 (diff)
gnu: Add ocrodjvu.
* gnu/packages/djvu.scm (ocrodjvu): New variable.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/djvu.scm89
1 files changed, 89 insertions, 0 deletions
diff --git a/gnu/packages/djvu.scm b/gnu/packages/djvu.scm
index 2a94862c3b8..6423eb124f1 100644
--- a/gnu/packages/djvu.scm
+++ b/gnu/packages/djvu.scm
@@ -39,12 +39,15 @@
39 #:use-module (gnu packages imagemagick) 39 #:use-module (gnu packages imagemagick)
40 #:use-module (gnu packages linux) 40 #:use-module (gnu packages linux)
41 #:use-module (gnu packages ncurses) 41 #:use-module (gnu packages ncurses)
42 #:use-module (gnu packages ocr)
42 #:use-module (gnu packages pdf) 43 #:use-module (gnu packages pdf)
43 #:use-module (gnu packages pkg-config) 44 #:use-module (gnu packages pkg-config)
44 #:use-module (gnu packages python) 45 #:use-module (gnu packages python)
46 #:use-module (gnu packages python-web)
45 #:use-module (gnu packages python-xyz) 47 #:use-module (gnu packages python-xyz)
46 #:use-module (gnu packages qt) 48 #:use-module (gnu packages qt)
47 #:use-module (gnu packages wxwidgets) 49 #:use-module (gnu packages wxwidgets)
50 #:use-module (gnu packages xml)
48 #:use-module (gnu packages xorg)) 51 #:use-module (gnu packages xorg))
49 52
50(define-public djvulibre 53(define-public djvulibre
@@ -398,3 +401,89 @@ It is able to:
398and background layers of images, which can then be encoded into a DjVu file.") 401and background layers of images, which can then be encoded into a DjVu file.")
399 (home-page "https://jwilk.net/software/didjvu") 402 (home-page "https://jwilk.net/software/didjvu")
400 (license license:gpl2))) 403 (license license:gpl2)))
404
405(define-public ocrodjvu
406 (package
407 (name "ocrodjvu")
408 (version "0.12")
409 (source
410 (origin
411 (method url-fetch)
412 (uri (string-append
413 "https://github.com/jwilk/ocrodjvu/releases/download/" version
414 "/ocrodjvu-" version ".tar.xz"))
415 (sha256
416 (base32 "09w9rqr7z2jd5kwp178zz2yrsc82mxs7gksipg92znxzgzhmw2ng"))))
417 (build-system gnu-build-system)
418 (native-inputs
419 `(("libxml2" ,libxml2)
420 ("python2-nose" ,python2-nose)
421 ("python2-pillow" ,python2-pillow)))
422 (inputs
423 `(("djvulibre" ,djvulibre)
424 ("ocrad" ,ocrad)
425 ("python" ,python-2)
426 ("python2-djvulibre" ,python2-djvulibre)
427 ("python2-html5lib" ,python2-html5lib)
428 ("python2-lxml" ,python2-lxml)
429 ("python2-pyicu" ,python2-pyicu)
430 ("python2-subprocess32" ,python2-subprocess32)
431 ("tesseract-ocr" ,tesseract-ocr)))
432 (arguments
433 `(#:modules ((guix build gnu-build-system)
434 ((guix build python-build-system) #:prefix python:)
435 (guix build utils))
436 #:imported-modules (,@%gnu-build-system-modules
437 (guix build python-build-system))
438 #:test-target "test"
439 #:phases
440 (modify-phases %standard-phases
441 (delete 'configure)
442 (add-before 'check 'disable-failing-test
443 (lambda _
444 (substitute* "tests/test_ipc.py"
445 ;; test_wait_signal gets stuck forever
446 (("yield self\\._test_signal, name")
447 "return True")
448 ;; test_path fails to find a file it should have created
449 (("path = os\\.getenv\\('PATH'\\)\\.split\\(':'\\)")
450 "return True"))
451 ;; Disable tests with tesseract. They can't work without
452 ;; the language files that must downloaded by the final user
453 ;; as they are not packaged in Guix.
454 (substitute* "tests/ocrodjvu/test.py"
455 (("engines = stdout\\.getvalue\\(\\)\\.splitlines\\(\\)")
456 "engines = ['ocrad']"))
457 (substitute* "tests/ocrodjvu/test_integration.py"
458 (("engines = 'tesseract', 'cuneiform', 'gocr', 'ocrad'")
459 "engines = 'ocrad'"))))
460 (replace 'install
461 (lambda* (#:key outputs #:allow-other-keys)
462 (let ((out (assoc-ref outputs "out")))
463 (invoke "make"
464 "DESTDIR="
465 (string-append "PREFIX=" out)
466 "install"))))
467 (add-after 'install 'wrap-python
468 (assoc-ref python:%standard-phases 'wrap))
469 (add-after 'wrap-python 'wrap-path
470 (lambda* (#:key inputs outputs #:allow-other-keys)
471 (let ((out (assoc-ref outputs "out"))
472 (djvulibre (assoc-ref inputs "djvulibre"))
473 (ocrad (assoc-ref inputs "ocrad"))
474 (tesseract (assoc-ref inputs "tesseract-ocr")))
475 (for-each (lambda (file)
476 (wrap-program (string-append out "/bin/" file)
477 `("PATH" ":" prefix
478 (,(string-append djvulibre "/bin:"
479 ocrad "/bin:"
480 tesseract "/bin")))))
481 '("djvu2hocr"
482 "hocr2djvused"
483 "ocrodjvu"))))))))
484 (synopsis "Program to perform OCR on DjVu files")
485 (description
486 "@code{ocrodjvu} is a wrapper for OCR systems, that allows you to perform
487OCR on DjVu files.")
488 (home-page "https://jwilk.net/software/ocrodjvu")
489 (license license:gpl2)))