Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/_test-code-samples.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:

- name: Tests code samples
run: |
./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 }}
./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_OCR_MODEL_ID }} ${{ secrets.MINDEE_V2_SE_TESTS_SPLIT_MODEL_ID }}

- name: Notify Slack Action on Failure
uses: ravsamhq/notify-slack-action@2.3.0
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/_test-integrations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,10 @@ jobs:
MINDEE_V2_API_KEY: ${{ secrets.MINDEE_V2_SE_TESTS_API_KEY }}
MINDEE_V2_FINDOC_MODEL_ID: ${{ secrets.MINDEE_V2_SE_TESTS_FINDOC_MODEL_ID }}
MINDEE_V2_SE_TESTS_BLANK_PDF_URL: ${{ secrets.MINDEE_V2_SE_TESTS_BLANK_PDF_URL }}
MINDEE_V2_SE_TESTS_CLASSIFICATION_MODEL_ID: ${{ secrets.MINDEE_V2_SE_TESTS_CLASSIFICATION_MODEL_ID }}
MINDEE_V2_SE_TESTS_CROP_MODEL_ID: ${{ secrets.MINDEE_V2_SE_TESTS_CROP_MODEL_ID }}
MINDEE_V2_SE_TESTS_SPLIT_MODEL_ID: ${{ secrets.MINDEE_V2_SE_TESTS_SPLIT_MODEL_ID }}
MINDEE_V2_SE_TESTS_OCR_MODEL_ID: ${{ secrets.MINDEE_V2_SE_TESTS_OCR_MODEL_ID }}
run: |
pytest --cov mindee -m integration

Expand Down
35 changes: 35 additions & 0 deletions docs/extras/code_samples/v2_classification.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
from mindee import (
ClientV2,
PathInput,
ClassificationParameters,
ClassificationResponse,
)

input_path = "/path/to/the/file.ext"
api_key = "MY_API_KEY"
model_id = "MY_CLASSIFICATION_MODEL_ID"

# Init a new client
mindee_client = ClientV2(api_key)

# Set parameters
params = ClassificationParameters(
# ID of the model, required.
model_id=model_id,
)

# Load a file from disk
input_source = PathInput(input_path)

# Send for processing using polling
response = mindee_client.enqueue_and_get_result(
ClassificationResponse,
input_source,
params,
)

# Print a brief summary of the parsed data
print(response.inference)

# Access the classification result
classification: str = response.inference.result.classification.document_type
35 changes: 35 additions & 0 deletions docs/extras/code_samples/v2_crop.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
from mindee import (
ClientV2,
PathInput,
CropParameters,
CropResponse,
)

input_path = "/path/to/the/file.ext"
api_key = "MY_API_KEY"
model_id = "MY_CROP_MODEL_ID"

# Init a new client
mindee_client = ClientV2(api_key)

# Set parameters
params = CropParameters(
# ID of the model, required.
model_id=model_id,
)

# Load a file from disk
input_source = PathInput(input_path)

# Send for processing using polling
response = mindee_client.enqueue_and_get_result(
CropResponse,
input_source,
params,
)

# Print a brief summary of the parsed data
print(response.inference)

# Access the crop result
crops: list = response.inference.result.crops
35 changes: 35 additions & 0 deletions docs/extras/code_samples/v2_ocr.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
from mindee import (
ClientV2,
PathInput,
OCRParameters,
OCRResponse,
)

input_path = "/path/to/the/file.ext"
api_key = "MY_API_KEY"
model_id = "MY_OCR_MODEL_ID"

# Init a new client
mindee_client = ClientV2(api_key)

# Set parameters
params = OCRParameters(
# ID of the model, required.
model_id=model_id,
)

# Load a file from disk
input_source = PathInput(input_path)

# Send for processing using polling
response = mindee_client.enqueue_and_get_result(
OCRResponse,
input_source,
params,
)

# Print a brief summary of the parsed data
print(response.inference)

# Access the ocr result
pages: list = response.inference.result.pages
16 changes: 16 additions & 0 deletions mindee/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,16 @@
from mindee.parsing.common.predict_response import PredictResponse
from mindee.parsing.common.workflow_response import WorkflowResponse
from mindee.parsing.v2 import InferenceResponse, JobResponse
from mindee.v2.product.classification.classification_parameters import (
ClassificationParameters,
)
from mindee.v2.product.classification.classification_response import (
ClassificationResponse,
)
from mindee.v2.product.crop.crop_parameters import CropParameters
from mindee.v2.product.crop.crop_response import CropResponse
from mindee.v2.product.ocr.ocr_parameters import OCRParameters
from mindee.v2.product.ocr.ocr_response import OCRResponse
from mindee.v2.product.split.split_parameters import SplitParameters
from mindee.v2.product.split.split_response import SplitResponse

Expand All @@ -30,8 +40,12 @@
"AsyncPredictResponse",
"Base64Input",
"BytesInput",
"ClassificationResponse",
"ClassificationParameters",
"Client",
"ClientV2",
"CropParameters",
"CropResponse",
"DataSchema",
"DataSchemaField",
"DataSchemaReplace",
Expand All @@ -42,6 +56,8 @@
"Job",
"JobResponse",
"LocalResponse",
"OCRParameters",
"OCRResponse",
"PageOptions",
"PathInput",
"PollingOptions",
Expand Down
2 changes: 0 additions & 2 deletions mindee/input/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from mindee.input.local_response import LocalResponse
from mindee.input.base_parameters import BaseParameters
from mindee.input.inference_parameters import InferenceParameters
from mindee.v2.product.split.split_parameters import SplitParameters
from mindee.input.page_options import PageOptions
from mindee.input.polling_options import PollingOptions
from mindee.input.sources.base_64_input import Base64Input
Expand All @@ -26,6 +25,5 @@
"PathInput",
"PollingOptions",
"UrlInputSource",
"SplitParameters",
"WorkflowOptions",
]
16 changes: 16 additions & 0 deletions mindee/v2/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,23 @@
from mindee.v2.product.classification.classification_parameters import (
ClassificationParameters,
)
from mindee.v2.product.classification.classification_response import (
ClassificationResponse,
)
from mindee.v2.product.crop.crop_parameters import CropParameters
from mindee.v2.product.crop.crop_response import CropResponse
from mindee.v2.product.ocr.ocr_parameters import OCRParameters
from mindee.v2.product.ocr.ocr_response import OCRResponse
from mindee.v2.product.split.split_parameters import SplitParameters
from mindee.v2.product.split.split_response import SplitResponse

__all__ = [
"ClassificationResponse",
"ClassificationParameters",
"CropResponse",
"CropParameters",
"OCRResponse",
"OCRParameters",
"SplitResponse",
"SplitParameters",
]
16 changes: 16 additions & 0 deletions mindee/v2/product/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,23 @@
from mindee.v2.product.classification.classification_parameters import (
ClassificationParameters,
)
from mindee.v2.product.classification.classification_response import (
ClassificationResponse,
)
from mindee.v2.product.crop.crop_parameters import CropParameters
from mindee.v2.product.crop.crop_response import CropResponse
from mindee.v2.product.ocr.ocr_parameters import OCRParameters
from mindee.v2.product.ocr.ocr_response import OCRResponse
from mindee.v2.product.split.split_parameters import SplitParameters
from mindee.v2.product.split.split_response import SplitResponse

__all__ = [
"ClassificationParameters",
"ClassificationResponse",
"CropResponse",
"CropParameters",
"OCRResponse",
"OCRParameters",
"SplitResponse",
"SplitParameters",
]
21 changes: 21 additions & 0 deletions mindee/v2/product/classification/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from mindee.v2.product.classification.classification_classifier import (
ClassificationClassifier,
)
from mindee.v2.product.classification.classification_inference import (
ClassificationInference,
)
from mindee.v2.product.classification.classification_parameters import (
ClassificationParameters,
)
from mindee.v2.product.classification.classification_response import (
ClassificationResponse,
)
from mindee.v2.product.classification.classification_result import ClassificationResult

__all__ = [
"ClassificationClassifier",
"ClassificationInference",
"ClassificationParameters",
"ClassificationResponse",
"ClassificationResult",
]
14 changes: 14 additions & 0 deletions mindee/v2/product/classification/classification_classifier.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from mindee.parsing.common.string_dict import StringDict


class ClassificationClassifier:
"""Document level classification."""

document_type: str
"""The document type, as identified on given classification values."""

def __init__(self, server_response: StringDict):
self.document_type = server_response["document_type"]

def __str__(self) -> str:
return f":Document Type: {self.document_type}"
19 changes: 19 additions & 0 deletions mindee/v2/product/classification/classification_inference.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from mindee.parsing.common.string_dict import StringDict
from mindee.v2.parsing.inference.base_inference import BaseInference
from mindee.v2.product.classification.classification_result import ClassificationResult


class ClassificationInference(BaseInference):
"""The inference result for a classification utility request."""

result: ClassificationResult
"""Result of a classification inference."""
_slug: str = "classification"
"""Slug of the endpoint."""

def __init__(self, raw_response: StringDict) -> None:
super().__init__(raw_response)
self.result = ClassificationResult(raw_response["result"])

def __str__(self) -> str:
return f"Inference\n#########\n{self.model}\n{self.file}\n{self.result}\n"
9 changes: 9 additions & 0 deletions mindee/v2/product/classification/classification_parameters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from mindee.input.base_parameters import BaseParameters


class ClassificationParameters(BaseParameters):
"""
Parameters accepted by the classification utility v2 endpoint.
"""

_slug: str = "utilities/classification"
19 changes: 19 additions & 0 deletions mindee/v2/product/classification/classification_response.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from mindee.parsing.common.string_dict import StringDict
from mindee.v2.parsing.inference import BaseResponse
from mindee.v2.product.classification.classification_inference import (
ClassificationInference,
)


class ClassificationResponse(BaseResponse):
"""Represent a classification inference response from Mindee V2 API."""

inference: ClassificationInference
"""Inference object for classification inference."""

_slug: str = "utilities/classification"
"""Slug of the inference."""

def __init__(self, raw_response: StringDict) -> None:
super().__init__(raw_response)
self.inference = ClassificationInference(raw_response["inference"])
16 changes: 16 additions & 0 deletions mindee/v2/product/classification/classification_result.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from mindee.parsing.common.string_dict import StringDict
from mindee.v2.product.classification.classification_classifier import (
ClassificationClassifier,
)


class ClassificationResult:
"""Classification result info."""

classification: ClassificationClassifier

def __init__(self, raw_response: StringDict) -> None:
self.classification = ClassificationClassifier(raw_response["classification"])

def __str__(self) -> str:
return f"Classification\n======{self.classification}"
13 changes: 13 additions & 0 deletions mindee/v2/product/crop/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from mindee.v2.product.crop.crop_box import CropBox
from mindee.v2.product.crop.crop_inference import CropInference
from mindee.v2.product.crop.crop_parameters import CropParameters
from mindee.v2.product.crop.crop_response import CropResponse
from mindee.v2.product.crop.crop_result import CropResult

__all__ = [
"CropBox",
"CropInference",
"CropParameters",
"CropResponse",
"CropResult",
]
18 changes: 18 additions & 0 deletions mindee/v2/product/crop/crop_box.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from mindee.parsing.common.string_dict import StringDict
from mindee.parsing.v2.field.field_location import FieldLocation


class CropBox:
"""Crop inference result."""

location: FieldLocation
"""Location which includes cropping coordinates for the detected object, within the source document."""
object_type: str
"""Type or classification of the detected object."""

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

def __str__(self) -> str:
return f"* :Location: {self.location}\n :Object Type: {self.object_type}"
19 changes: 19 additions & 0 deletions mindee/v2/product/crop/crop_inference.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from mindee.parsing.common.string_dict import StringDict
from mindee.v2.parsing.inference.base_inference import BaseInference
from mindee.v2.product.crop.crop_result import CropResult


class CropInference(BaseInference):
"""Crop inference result."""

result: CropResult
"""Result of a crop inference."""
_slug: str = "crop"
"""Slug of the endpoint."""

def __init__(self, raw_response: StringDict) -> None:
super().__init__(raw_response)
self.result = CropResult(raw_response["result"])

def __str__(self) -> str:
return f"Inference\n#########\n{self.model}\n{self.file}\n{self.result}\n"
9 changes: 9 additions & 0 deletions mindee/v2/product/crop/crop_parameters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from mindee.input.base_parameters import BaseParameters


class CropParameters(BaseParameters):
"""
Parameters accepted by the crop utility v2 endpoint.
"""

_slug: str = "utilities/crop"
Loading