1{ lib, fetchFromGitHub, buildPythonPackage, pillow, six
2, tesseract, cuneiform
3}:
4
5buildPythonPackage rec {
6 name = "pyocr-${version}";
7 version = "0.4.7";
8
9 # Don't fetch from PYPI because it doesn't contain tests.
10 src = fetchFromGitHub {
11 owner = "jflesch";
12 repo = "pyocr";
13 rev = version;
14 sha256 = "1iw73r8yrgjf8g00yzpz62ymqbf89cqhyhl9g430srmsrq7mn2yd";
15 };
16
17 NIX_CUNEIFORM_CMD = "${cuneiform}/bin/cuneiform";
18 NIX_CUNEIFORM_DATA = "${cuneiform}/share/cuneiform";
19 NIX_LIBTESSERACT_PATH = "${tesseract}/lib/libtesseract.so";
20 NIX_TESSDATA_PREFIX = "${tesseract}/share/tessdata";
21 NIX_TESSERACT_CMD = "${tesseract}/bin/tesseract";
22
23 patches = [ ./paths.patch ];
24
25 postPatch = ''
26 substituteInPlace src/pyocr/cuneiform.py \
27 --subst-var NIX_CUNEIFORM_CMD \
28 --subst-var NIX_CUNEIFORM_CMD
29
30 substituteInPlace src/pyocr/tesseract.py \
31 --subst-var NIX_TESSERACT_CMD
32
33 substituteInPlace src/pyocr/libtesseract/tesseract_raw.py \
34 --subst-var NIX_TESSDATA_PREFIX \
35 --subst-var NIX_LIBTESSERACT_PATH
36
37 # Disable specific tests that are probably failing because of this issue:
38 # https://github.com/jflesch/pyocr/issues/52
39 for test in $disabledTests; do
40 file="''${test%%:*}"
41 fun="''${test#*:}"
42 echo "$fun = unittest.skip($fun)" >> "tests/tests_$file.py"
43 done
44 '';
45
46 disabledTests = [
47 "cuneiform:TestTxt.test_basic"
48 "cuneiform:TestTxt.test_european"
49 "cuneiform:TestTxt.test_french"
50 "cuneiform:TestWordBox.test_basic"
51 "cuneiform:TestWordBox.test_european"
52 "cuneiform:TestWordBox.test_french"
53 "libtesseract:TestBasicDoc.test_basic"
54 "libtesseract:TestDigitLineBox.test_digits"
55 "libtesseract:TestLineBox.test_japanese"
56 "libtesseract:TestTxt.test_japanese"
57 "libtesseract:TestWordBox.test_japanese"
58 "tesseract:TestDigitLineBox.test_digits"
59 "tesseract:TestTxt.test_japanese"
60 ];
61
62 propagatedBuildInputs = [ pillow six ];
63
64 meta = {
65 homepage = "https://github.com/jflesch/pyocr";
66 description = "A Python wrapper for Tesseract and Cuneiform";
67 license = lib.licenses.gpl3Plus;
68 };
69}