1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 # build inputs
6 numpy,
7 opencv-python,
8 scipy,
9 pandas,
10 pillow,
11 pyyaml,
12 iopath,
13 pdfplumber,
14 pdf2image,
15 google-cloud-vision,
16 pytesseract,
17 torch,
18 torchvision,
19 effdet,
20 # check inputs
21 pytestCheckHook,
22}:
23let
24 pname = "layoutparser";
25 version = "0.3.4";
26 optional-dependencies = {
27 ocr = [
28 google-cloud-vision
29 pytesseract
30 ];
31 gcv = [ google-cloud-vision ];
32 tesseract = [ pytesseract ];
33 layoutmodels = [
34 torch
35 torchvision
36 effdet
37 ];
38 effdet = [
39 torch
40 torchvision
41 effdet
42 ];
43 # paddledetection = [ paddlepaddle ]
44 };
45in
46buildPythonPackage {
47 inherit pname version;
48 format = "setuptools";
49
50 src = fetchFromGitHub {
51 owner = "Layout-Parser";
52 repo = "layout-parser";
53 tag = "v${version}";
54 hash = "sha256-qBzcIUmgnGy/Xn/B+7UrLrRhCvCkapL+ymqGS2sMVgA=";
55 };
56
57 propagatedBuildInputs = [
58 numpy
59 opencv-python
60 scipy
61 pandas
62 pillow
63 pyyaml
64 iopath
65 pdfplumber
66 pdf2image
67 ];
68
69 pythonImportsCheck = [ "layoutparser" ];
70
71 nativeCheckInputs = [ pytestCheckHook ] ++ optional-dependencies.ocr;
72
73 disabledTests = [
74 "test_PaddleDetectionModel" # requires paddlepaddle not yet packaged
75 # requires detectron2 not yet packaged
76 "test_Detectron2Model"
77 "test_AutoModel"
78 # requires effdet (disable for now until effdet builds on darwin)
79 "test_EffDetModel"
80 # problems with google-cloud-vision
81 # AttributeError: module 'google.cloud.vision' has no attribute 'types'
82 "test_gcv_agent"
83 "test_viz"
84 # - Failed: DID NOT RAISE <class 'ImportError'>
85 "test_when_backends_are_not_loaded"
86 ];
87
88 disabledTestPaths = [
89 "tests_deps/test_only_detectron2.py" # requires detectron2 not yet packaged
90 "tests_deps/test_only_effdet.py" # requires effdet (disable for now until effdet builds on darwin)
91 "tests_deps/test_only_paddledetection.py" # requires paddlepaddle not yet packaged
92 ];
93
94 optional-dependencies = optional-dependencies;
95
96 meta = with lib; {
97 description = "Unified toolkit for Deep Learning Based Document Image Analysis";
98 homepage = "https://github.com/Layout-Parser/layout-parser";
99 changelog = "https://github.com/Layout-Parser/layout-parser/releases/tag/v${version}";
100 license = licenses.asl20;
101 maintainers = with maintainers; [ happysalada ];
102 };
103}