Skip to content

Commit 4a2199e

Browse files
✨ add support for OCR V2 (+ fix tests)
1 parent c3af04d commit 4a2199e

21 files changed

Lines changed: 419 additions & 7 deletions

.github/workflows/_test-code-samples.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040
4141
- name: Tests code samples
4242
run: |
43-
./tests/test_code_samples.sh ${{ secrets.MINDEE_ACCOUNT_SE_TESTS }} ${{ secrets.MINDEE_ENDPOINT_SE_TESTS }} ${{ secrets.MINDEE_API_KEY_SE_TESTS }} ${{ secrets.MINDEE_V2_SE_TESTS_API_KEY }} ${{ secrets.MINDEE_V2_SE_TESTS_FINDOC_MODEL_ID }} ${{ secrets.MINDEE_V2_SE_TESTS_SPLIT_MODEL_ID }}
43+
./tests/test_code_samples.sh ${{ secrets.MINDEE_ACCOUNT_SE_TESTS }} ${{ secrets.MINDEE_ENDPOINT_SE_TESTS }} ${{ secrets.MINDEE_API_KEY_SE_TESTS }} ${{ secrets.MINDEE_V2_SE_TESTS_API_KEY }} ${{ secrets.MINDEE_V2_SE_TESTS_FINDOC_MODEL_ID }} ${{ secrets.MINDEE_V2_SE_TESTS_CLASSIFICATION_MODEL_ID }} ${{ secrets.MINDEE_V2_SE_TESTS_CROP_MODEL_ID }} ${{ secrets.MINDEE_V2_SE_TESTS_CROP_MODEL_ID }} ${{ secrets.MINDEE_V2_SE_TESTS_SPLIT_MODEL_ID }}
4444
4545
- name: Notify Slack Action on Failure
4646
uses: ravsamhq/notify-slack-action@2.3.0

.github/workflows/_test-integrations.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@ jobs:
4949
MINDEE_V2_API_KEY: ${{ secrets.MINDEE_V2_SE_TESTS_API_KEY }}
5050
MINDEE_V2_FINDOC_MODEL_ID: ${{ secrets.MINDEE_V2_SE_TESTS_FINDOC_MODEL_ID }}
5151
MINDEE_V2_SE_TESTS_BLANK_PDF_URL: ${{ secrets.MINDEE_V2_SE_TESTS_BLANK_PDF_URL }}
52+
MINDEE_V2_SE_TESTS_CLASSIFICATION_MODEL_ID: ${{ secrets.MINDEE_V2_SE_TESTS_CLASSIFICATION_MODEL_ID }}
53+
MINDEE_V2_SE_TESTS_CROP_MODEL_ID: ${{ secrets.MINDEE_V2_SE_TESTS_CROP_MODEL_ID }}
5254
MINDEE_V2_SE_TESTS_SPLIT_MODEL_ID: ${{ secrets.MINDEE_V2_SE_TESTS_SPLIT_MODEL_ID }}
55+
MINDEE_V2_SE_TESTS_OCR_MODEL_ID: ${{ secrets.MINDEE_V2_SE_TESTS_OCR_MODEL_ID }}
5356
run: |
5457
pytest --cov mindee -m integration
5558
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from mindee import ClientV2, ClassificationParameters, ClassificationResponse, PathInput
2+
3+
input_path = "/path/to/the/file.ext"
4+
api_key = "MY_API_KEY"
5+
model_id = "MY_CLASSIFICATION_MODEL_ID"
6+
7+
# Init a new client
8+
mindee_client = ClientV2(api_key)
9+
10+
# Set inference parameters
11+
params = ClassificationParameters(
12+
# ID of the model, required.
13+
model_id=model_id,
14+
)
15+
16+
# Load a file from disk
17+
input_source = PathInput(input_path)
18+
19+
# Send for processing
20+
response = mindee_client.enqueue_and_get_result(
21+
ClassificationResponse,
22+
input_source,
23+
params,
24+
)
25+
26+
# Print a brief summary of the parsed data
27+
print(response.inference)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from mindee import ClientV2, CropParameters, CropResponse, PathInput
2+
3+
input_path = "/path/to/the/file.ext"
4+
api_key = "MY_API_KEY"
5+
model_id = "MY_CROP_MODEL_ID"
6+
7+
# Init a new client
8+
mindee_client = ClientV2(api_key)
9+
10+
# Set inference parameters
11+
params = CropParameters(
12+
# ID of the model, required.
13+
model_id=model_id,
14+
)
15+
16+
# Load a file from disk
17+
input_source = PathInput(input_path)
18+
19+
# Send for processing
20+
response = mindee_client.enqueue_and_get_result(
21+
CropResponse,
22+
input_source,
23+
params,
24+
)
25+
26+
# Print a brief summary of the parsed data
27+
print(response.inference)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from mindee import ClientV2, OCRParameters, OCRResponse, PathInput
2+
3+
input_path = "/path/to/the/file.ext"
4+
api_key = "MY_API_KEY"
5+
model_id = "MY_OCR_MODEL_ID"
6+
7+
# Init a new client
8+
mindee_client = ClientV2(api_key)
9+
10+
# Set inference parameters
11+
params = OCRParameters(
12+
# ID of the model, required.
13+
model_id=model_id,
14+
)
15+
16+
# Load a file from disk
17+
input_source = PathInput(input_path)
18+
19+
# Send for processing
20+
response = mindee_client.enqueue_and_get_result(
21+
OCRResponse,
22+
input_source,
23+
params,
24+
)
25+
26+
# Print a brief summary of the parsed data
27+
print(response.inference)

mindee/v2/__init__.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
from mindee.v2.product.crop.crop_parameters import CropParameters
22
from mindee.v2.product.crop.crop_response import CropResponse
3+
from mindee.v2.product.ocr.ocr_parameters import OCRParameters
4+
from mindee.v2.product.ocr.ocr_response import OCRResponse
35
from mindee.v2.product.split.split_parameters import SplitParameters
46
from mindee.v2.product.split.split_response import SplitResponse
57

68
__all__ = [
7-
"CropParameters",
89
"CropResponse",
10+
"CropParameters",
11+
"OCRResponse",
12+
"OCRParameters",
913
"SplitResponse",
1014
"SplitParameters",
1115
]

mindee/v2/product/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
1+
from mindee.v2.product.crop.crop_parameters import CropParameters
2+
from mindee.v2.product.crop.crop_response import CropResponse
3+
from mindee.v2.product.ocr.ocr_parameters import OCRParameters
4+
from mindee.v2.product.ocr.ocr_response import OCRResponse
15
from mindee.v2.product.split.split_parameters import SplitParameters
26
from mindee.v2.product.split.split_response import SplitResponse
37

48
__all__ = [
9+
"CropResponse",
10+
"CropParameters",
11+
"OCRResponse",
12+
"OCRParameters",
513
"SplitResponse",
614
"SplitParameters",
715
]

mindee/v2/product/crop/crop_box.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ class CropBox:
66
"""Crop inference result."""
77

88
location: FieldLocation
9-
"""Page box of the crop inference."""
9+
"""Location which includes cropping coordinates for the detected object, within the source document."""
1010
object_type: str
11-
"""Document type of the crop inference."""
11+
"""Type or classification of the detected object."""
1212

1313
def __init__(self, server_response: StringDict):
1414
self.location = FieldLocation(server_response["location"])

mindee/v2/product/ocr/__init__.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from mindee.v2.product.ocr.ocr_inference import OCRInference
2+
from mindee.v2.product.ocr.ocr_page import OCRPage
3+
from mindee.v2.product.ocr.ocr_parameters import OCRParameters
4+
from mindee.v2.product.ocr.ocr_response import OCRResponse
5+
from mindee.v2.product.ocr.ocr_result import OCRResult
6+
from mindee.v2.product.ocr.ocr_word import OCRWord
7+
8+
__all__ = [
9+
"OCRInference",
10+
"OCRPage",
11+
"OCRParameters",
12+
"OCRResponse",
13+
"OCRResult",
14+
"OCRWord",
15+
]
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from mindee.parsing.common.string_dict import StringDict
2+
from mindee.v2.parsing.inference.base_inference import BaseInference
3+
from mindee.v2.product.ocr.ocr_result import OCRResult
4+
5+
6+
class OCRInference(BaseInference):
7+
"""OCR inference result."""
8+
9+
result: OCRResult
10+
"""Result of a ocr inference."""
11+
_slug: str = "ocr"
12+
"""Slug of the endpoint."""
13+
14+
def __init__(self, raw_response: StringDict) -> None:
15+
super().__init__(raw_response)
16+
self.result = OCRResult(raw_response["result"])
17+
18+
def __str__(self) -> str:
19+
return f"Inference\n#########\n{self.model}\n{self.file}\n{self.result}\n"

0 commit comments

Comments
 (0)