Skip to content

Commit 30a6a75

Browse files
add full support for split
1 parent 7c23503 commit 30a6a75

File tree

8 files changed

+77
-44
lines changed

8 files changed

+77
-44
lines changed

mindee/v2/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1+
from mindee.v2.parsing import SplitParameters
12
from mindee.v2.parsing.inference.base_inference import BaseInference
23
from mindee.v2.parsing.inference.base_inference_response import (
34
BaseInferenceResponse,
45
TypeInferenceResponse,
56
)
6-
from mindee.v2.parsing.inference.split.split_inference import SplitInference
77
from mindee.v2.parsing.inference.split.split_response import SplitResponse
88

99
__all__ = [
1010
"BaseInference",
1111
"BaseInferenceResponse",
1212
"TypeInferenceResponse",
13-
"SplitInference",
1413
"SplitResponse",
14+
"SplitParameters",
1515
]

mindee/v2/parsing/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1+
from mindee.v2.parsing.inference import SplitParameters
12
from mindee.v2.parsing.inference.base_inference import BaseInference
23
from mindee.v2.parsing.inference.base_inference_response import (
34
BaseInferenceResponse,
45
TypeInferenceResponse,
56
)
6-
from mindee.v2.parsing.inference.split.split_inference import SplitInference
77
from mindee.v2.parsing.inference.split.split_response import SplitResponse
88

99
__all__ = [
1010
"BaseInference",
1111
"BaseInferenceResponse",
1212
"TypeInferenceResponse",
13-
"SplitInference",
1413
"SplitResponse",
14+
"SplitParameters",
1515
]

mindee/v2/parsing/inference/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,19 @@
33
BaseInferenceResponse,
44
TypeInferenceResponse,
55
)
6+
from mindee.v2.parsing.inference.split.split import Split
67
from mindee.v2.parsing.inference.split.split_inference import SplitInference
8+
from mindee.v2.parsing.inference.split.split_parameters import SplitParameters
79
from mindee.v2.parsing.inference.split.split_response import SplitResponse
10+
from mindee.v2.parsing.inference.split.split_result import SplitResult
811

912
__all__ = [
1013
"BaseInference",
1114
"BaseInferenceResponse",
1215
"TypeInferenceResponse",
16+
"Split",
1317
"SplitInference",
18+
"SplitParameters",
1419
"SplitResponse",
20+
"SplitResult",
1521
]
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from typing import List
2+
3+
from mindee.parsing.common.string_dict import StringDict
4+
5+
6+
class Split:
7+
"""Split inference result."""
8+
9+
page_range: List[int]
10+
"""Page range of the split inference."""
11+
document_type: str
12+
"""Document type of the split inference."""
13+
14+
def __init__(self, server_response: StringDict):
15+
self.page_range = server_response["page_range"]
16+
self.document_type = server_response["document_type"]
17+
18+
def __str__(self) -> str:
19+
page_range = ",".join([str(page_index) for page_index in self.page_range])
20+
return f":Page Range: {page_range}\n:Document Type: {self.document_type}"
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
1-
from typing import Any
2-
31
from mindee.parsing.common.string_dict import StringDict
42
from mindee.v2.parsing.inference.base_inference import BaseInference
3+
from mindee.v2.parsing.inference.split.split_result import SplitResult
54

65

76
class SplitInference(BaseInference):
87
"""Split inference result."""
98

10-
result: Any
9+
result: SplitResult
1110
"""Result of a split inference."""
1211
_slug: str = "split"
1312
"""Slug of the endpoint."""
1413

1514
def __init__(self, raw_response: StringDict) -> None:
1615
super().__init__(raw_response)
17-
self.result = raw_response["result"]
16+
self.result = SplitResult(raw_response["result"])
1817

1918
def __str__(self) -> str:
2019
return f"Inference\n#########\n{self.model}\n{self.file}\n{self.result}\n"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from typing import List
2+
3+
from mindee.parsing.common.string_dict import StringDict
4+
from mindee.v2.parsing.inference.split.split import Split
5+
6+
7+
class SplitResult:
8+
"""Split result info."""
9+
10+
split: List[Split]
11+
12+
def __init__(self, raw_response: StringDict) -> None:
13+
self.split = [Split(split) for split in raw_response["split"]]
14+
15+
def __str__(self) -> str:
16+
out_str = f"Splits\n======{self.split}"
17+
return out_str

tests/v2/parsing/test_split_integration.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,5 @@ def test_split_blank(v2_client: ClientV2, split_model_id: str):
3535
) # Note: do not use blank_1.pdf for this.
3636
assert response.inference is not None
3737
assert response.inference.file.name == "default_sample.pdf"
38-
assert response.inference.result.get("split")
39-
assert len(response.inference.result.get("split")) == 2
38+
assert response.inference.result.split
39+
assert len(response.inference.result.split) == 2
Lines changed: 25 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import pytest
22

33
from mindee import LocalResponse
4+
from mindee.v2.parsing.inference.split.split import Split
45
from mindee.v2.parsing.inference.split.split_inference import SplitInference
56
from mindee.v2.parsing.inference.split.split_response import SplitResponse
7+
from mindee.v2.parsing.inference.split.split_result import SplitResult
68
from tests.utils import V2_UTILITIES_DATA_DIR
79

810

@@ -11,44 +13,33 @@ def test_split_single():
1113
input_inference = LocalResponse(V2_UTILITIES_DATA_DIR / "split_single.json")
1214
split_response = input_inference.deserialize_response(SplitResponse)
1315
assert isinstance(split_response.inference, SplitInference)
14-
assert split_response.inference.result.get("split")
15-
assert len(split_response.inference.result.get("split")[0].get("page_range")) == 2
16-
assert split_response.inference.result.get("split")[0].get("page_range")[0] == 0
17-
assert split_response.inference.result.get("split")[0].get("page_range")[1] == 0
18-
assert (
19-
split_response.inference.result.get("split")[0].get("document_type")
20-
== "receipt"
21-
)
16+
assert split_response.inference.result.split
17+
assert len(split_response.inference.result.split[0].page_range) == 2
18+
assert split_response.inference.result.split[0].page_range[0] == 0
19+
assert split_response.inference.result.split[0].page_range[1] == 0
20+
assert split_response.inference.result.split[0].document_type == "receipt"
2221

2322

2423
@pytest.mark.v2
2524
def test_split_multiple():
2625
input_inference = LocalResponse(V2_UTILITIES_DATA_DIR / "split_multiple.json")
2726
split_response = input_inference.deserialize_response(SplitResponse)
2827
assert isinstance(split_response.inference, SplitInference)
29-
assert split_response.inference.result.get("split")
30-
assert len(split_response.inference.result.get("split")) == 3
31-
32-
assert len(split_response.inference.result.get("split")[0].get("page_range")) == 2
33-
assert split_response.inference.result.get("split")[0].get("page_range")[0] == 0
34-
assert split_response.inference.result.get("split")[0].get("page_range")[1] == 0
35-
assert (
36-
split_response.inference.result.get("split")[0].get("document_type")
37-
== "invoice"
38-
)
39-
40-
assert len(split_response.inference.result.get("split")[1].get("page_range")) == 2
41-
assert split_response.inference.result.get("split")[1].get("page_range")[0] == 1
42-
assert split_response.inference.result.get("split")[1].get("page_range")[1] == 3
43-
assert (
44-
split_response.inference.result.get("split")[1].get("document_type")
45-
== "invoice"
46-
)
47-
48-
assert len(split_response.inference.result.get("split")[2].get("page_range")) == 2
49-
assert split_response.inference.result.get("split")[2].get("page_range")[0] == 4
50-
assert split_response.inference.result.get("split")[2].get("page_range")[1] == 4
51-
assert (
52-
split_response.inference.result.get("split")[2].get("document_type")
53-
== "invoice"
54-
)
28+
assert isinstance(split_response.inference.result, SplitResult)
29+
assert isinstance(split_response.inference.result.split[0], Split)
30+
assert len(split_response.inference.result.split) == 3
31+
32+
assert len(split_response.inference.result.split[0].page_range) == 2
33+
assert split_response.inference.result.split[0].page_range[0] == 0
34+
assert split_response.inference.result.split[0].page_range[1] == 0
35+
assert split_response.inference.result.split[0].document_type == "invoice"
36+
37+
assert len(split_response.inference.result.split[1].page_range) == 2
38+
assert split_response.inference.result.split[1].page_range[0] == 1
39+
assert split_response.inference.result.split[1].page_range[1] == 3
40+
assert split_response.inference.result.split[1].document_type == "invoice"
41+
42+
assert len(split_response.inference.result.split[2].page_range) == 2
43+
assert split_response.inference.result.split[2].page_range[0] == 4
44+
assert split_response.inference.result.split[2].page_range[1] == 4
45+
assert split_response.inference.result.split[2].document_type == "invoice"

0 commit comments

Comments
 (0)