mindee 4.0.2__tar.gz → 4.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mindee-4.0.2 → mindee-4.2.0}/PKG-INFO +27 -17
- {mindee-4.0.2 → mindee-4.2.0}/README.md +19 -11
- {mindee-4.0.2 → mindee-4.2.0}/mindee/cli.py +162 -138
- {mindee-4.0.2 → mindee-4.2.0}/mindee/client.py +76 -70
- {mindee-4.0.2 → mindee-4.2.0}/mindee/error/__init__.py +1 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/error/mindee_error.py +4 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/input/sources.py +48 -8
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/async_predict_response.py +5 -5
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/document.py +6 -2
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/extras/cropper_extra.py +3 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/inference.py +1 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/job.py +3 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/predict_response.py +2 -2
- mindee-4.2.0/mindee/parsing/custom/__init__.py +3 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/custom/classification.py +1 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/custom/line_items.py +22 -25
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/custom/list.py +12 -15
- mindee-4.2.0/mindee/parsing/generated/__init__.py +5 -0
- mindee-4.2.0/mindee/parsing/generated/generated_list.py +56 -0
- mindee-4.2.0/mindee/parsing/generated/generated_object.py +86 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/standard/amount.py +2 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/standard/base.py +10 -6
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/standard/date.py +6 -2
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/standard/locale.py +3 -3
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/standard/payment_details.py +4 -4
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/standard/position.py +5 -5
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/standard/text.py +2 -1
- mindee-4.2.0/mindee/product/__init__.py +30 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/barcode_reader/barcode_reader_v1.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/barcode_reader/barcode_reader_v1_document.py +1 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/cropper/cropper_v1.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/custom/custom_v1.py +1 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/custom/custom_v1_document.py +8 -7
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/custom/custom_v1_page.py +6 -5
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/eu/license_plate/license_plate_v1.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/eu/license_plate/license_plate_v1_document.py +1 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/financial_document/financial_document_v1.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/financial_document/financial_document_v1_document.py +1 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/bank_account_details/bank_account_details_v1.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/bank_account_details/bank_account_details_v1_document.py +1 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/bank_account_details/bank_account_details_v2.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/bank_account_details/bank_account_details_v2_document.py +1 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/carte_grise/carte_grise_v1.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/carte_grise/carte_grise_v1_document.py +1 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/carte_vitale/carte_vitale_v1.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/carte_vitale/carte_vitale_v1_document.py +1 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/id_card/id_card_v1.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/id_card/id_card_v1_document.py +1 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/id_card/id_card_v2.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/id_card/id_card_v2_document.py +1 -0
- mindee-4.2.0/mindee/product/generated/__init__.py +5 -0
- mindee-4.2.0/mindee/product/generated/generated_v1.py +31 -0
- mindee-4.2.0/mindee/product/generated/generated_v1_document.py +39 -0
- mindee-4.2.0/mindee/product/generated/generated_v1_page.py +43 -0
- mindee-4.2.0/mindee/product/generated/generated_v1_prediction.py +77 -0
- mindee-4.2.0/mindee/product/international_id/__init__.py +4 -0
- mindee-4.2.0/mindee/product/international_id/international_id_v1.py +37 -0
- mindee-4.2.0/mindee/product/international_id/international_id_v1_document.py +136 -0
- mindee-4.2.0/mindee/product/invoice/__init__.py +3 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/invoice/invoice_v4.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/invoice/invoice_v4_document.py +1 -0
- mindee-4.2.0/mindee/product/invoice_splitter/__init__.py +7 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/invoice_splitter/invoice_splitter_v1_document.py +2 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/invoice_splitter/invoice_splitter_v1_page_group.py +3 -3
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/material_certificate/material_certificate_v1.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/material_certificate/material_certificate_v1_document.py +1 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/multi_receipts_detector/multi_receipts_detector_v1.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_document.py +1 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/passport/passport_v1.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/passport/passport_v1_document.py +1 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/proof_of_address/proof_of_address_v1.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/proof_of_address/proof_of_address_v1_document.py +1 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/receipt/receipt_v5.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/receipt/receipt_v5_document.py +1 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/us/bank_check/bank_check_v1.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/us/bank_check/bank_check_v1_document.py +1 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/us/driver_license/driver_license_v1.py +6 -1
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/us/driver_license/driver_license_v1_document.py +1 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/us/w9/w9_v1.py +6 -1
- mindee-4.2.0/mindee/version +1 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee.egg-info/PKG-INFO +27 -17
- {mindee-4.0.2 → mindee-4.2.0}/mindee.egg-info/SOURCES.txt +11 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee.egg-info/requires.txt +9 -5
- {mindee-4.0.2 → mindee-4.2.0}/pyproject.toml +11 -1
- {mindee-4.0.2 → mindee-4.2.0}/setup.cfg +7 -5
- {mindee-4.0.2 → mindee-4.2.0}/tests/test_cli.py +52 -0
- {mindee-4.0.2 → mindee-4.2.0}/tests/test_inputs.py +21 -0
- mindee-4.0.2/mindee/parsing/custom/__init__.py +0 -3
- mindee-4.0.2/mindee/product/__init__.py +0 -46
- mindee-4.0.2/mindee/product/invoice_splitter/__init__.py +0 -1
- mindee-4.0.2/mindee/version +0 -1
- mindee-4.0.2/tests/product/us/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/LICENSE +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/__main__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/error/geometry_error.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/error/mimetype_error.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/error/mindee_http_error.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/geometry/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/geometry/bbox.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/geometry/minmax.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/geometry/point.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/geometry/polygon.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/geometry/polygon_utils.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/geometry/quadrilateral.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/input/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/input/page_options.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/logger.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/mindee_http/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/mindee_http/base_endpoint.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/mindee_http/endpoint.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/mindee_http/mindee_api.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/api_request.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/api_response.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/extras/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/extras/extras.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/feedback_response.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/ocr/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/ocr/mvision_v1.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/ocr/ocr.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/ocr/ocr_line.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/ocr/ocr_page.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/ocr/ocr_word.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/orientation.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/page.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/prediction.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/product.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/string_dict.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/common/summary_helper.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/standard/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/standard/classification.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/standard/company_registration.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/parsing/standard/tax.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/barcode_reader/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/cropper/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/cropper/cropper_v1_document.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/cropper/cropper_v1_page.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/custom/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/eu/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/eu/license_plate/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/financial_document/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/financial_document/financial_document_v1_line_item.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/bank_account_details/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/bank_account_details/bank_account_details_v2_bban.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/carte_grise/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/carte_vitale/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/id_card/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/id_card/id_card_v1_page.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/id_card/id_card_v2_page.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/petrol_receipt/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/petrol_receipt/petrol_receipt_v1.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/petrol_receipt/petrol_receipt_v1_document.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/petrol_receipt/petrol_receipt_v1_fuel.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/fr/petrol_receipt/petrol_receipt_v1_total.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/invoice/invoice_v4_line_item.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/invoice_splitter/invoice_splitter_v1.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/material_certificate/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/multi_receipts_detector/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/passport/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/proof_of_address/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/receipt/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/receipt/receipt_v4.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/receipt/receipt_v4_document.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/receipt/receipt_v5_line_item.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/us/__init__.py +0 -0
- {mindee-4.0.2/mindee/product/invoice → mindee-4.2.0/mindee/product/us/bank_check}/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/us/bank_check/bank_check_v1_page.py +0 -0
- {mindee-4.0.2/mindee/product/us/bank_check → mindee-4.2.0/mindee/product/us/driver_license}/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/us/driver_license/driver_license_v1_page.py +0 -0
- {mindee-4.0.2/mindee/product/us/driver_license → mindee-4.2.0/mindee/product/us/w9}/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/us/w9/w9_v1_document.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/product/us/w9/w9_v1_page.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/py.typed +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee/versions.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee.egg-info/dependency_links.txt +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee.egg-info/entry_points.txt +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee.egg-info/not-zip-safe +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/mindee.egg-info/top_level.txt +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/setup.py +0 -0
- {mindee-4.0.2/mindee/product/us/w9 → mindee-4.2.0/tests/fields}/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/tests/fields/test_amount.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/tests/fields/test_date.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/tests/fields/test_field.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/tests/fields/test_locale.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/tests/fields/test_ocr.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/tests/fields/test_orientation.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/tests/fields/test_payment_details.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/tests/fields/test_position.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/tests/fields/test_tax.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/tests/product/__init__.py +0 -0
- {mindee-4.0.2/tests/fields → mindee-4.2.0/tests/product/eu}/__init__.py +0 -0
- {mindee-4.0.2/tests/product/eu → mindee-4.2.0/tests/product/fr}/__init__.py +0 -0
- {mindee-4.0.2/tests/product/fr → mindee-4.2.0/tests/product/us}/__init__.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/tests/test_client.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/tests/test_geometry.py +0 -0
- {mindee-4.0.2 → mindee-4.2.0}/tests/test_pkg_versions.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mindee
|
|
3
|
-
Version: 4.0
|
|
3
|
+
Version: 4.2.0
|
|
4
4
|
Summary: Mindee API helper library for Python
|
|
5
5
|
Home-page: https://mindee.com/
|
|
6
6
|
Author: Mindee
|
|
@@ -14,6 +14,8 @@ Classifier: Programming Language :: Python :: 3.7
|
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.8
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.9
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
19
|
Classifier: Operating System :: OS Independent
|
|
18
20
|
Classifier: Development Status :: 5 - Production/Stable
|
|
19
21
|
Classifier: Intended Audience :: Developers
|
|
@@ -22,14 +24,14 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
22
24
|
Requires-Python: >=3.7
|
|
23
25
|
Description-Content-Type: text/markdown
|
|
24
26
|
License-File: LICENSE
|
|
25
|
-
Requires-Dist: pikepdf~=6.
|
|
27
|
+
Requires-Dist: pikepdf~=8.6; python_version >= "3.8"
|
|
28
|
+
Requires-Dist: pikepdf==6.2.9; python_version < "3.8"
|
|
26
29
|
Requires-Dist: pytz>=2023.3
|
|
27
30
|
Requires-Dist: requests~=2.31
|
|
28
31
|
Provides-Extra: dev
|
|
29
|
-
Requires-Dist: black==23.
|
|
30
|
-
Requires-Dist: mypy==1.
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist: pylint==2.17.1; extra == "dev"
|
|
32
|
+
Requires-Dist: black==23.10.0; extra == "dev"
|
|
33
|
+
Requires-Dist: mypy==1.6.1; extra == "dev"
|
|
34
|
+
Requires-Dist: pylint==2.17.7; extra == "dev"
|
|
33
35
|
Requires-Dist: setuptools==51.3.3; extra == "dev"
|
|
34
36
|
Requires-Dist: isort==5.11.5; extra == "dev"
|
|
35
37
|
Requires-Dist: pre-commit~=2.21.0; extra == "dev"
|
|
@@ -47,7 +49,7 @@ Provides-Extra: build
|
|
|
47
49
|
Requires-Dist: build~=0.9; extra == "build"
|
|
48
50
|
Requires-Dist: twine~=4.0; extra == "build"
|
|
49
51
|
|
|
50
|
-
[](https://opensource.org/licenses/MIT) [](https://github.com/mindee/mindee-api-python) [](https://pypi.org/project/mindee/) [](https://pypi.org/project/mindee/)
|
|
52
|
+
[](https://opensource.org/licenses/MIT) [](https://github.com/mindee/mindee-api-python) [](https://pypi.org/project/mindee/) [](https://pypi.org/project/mindee/)
|
|
51
53
|
|
|
52
54
|
# Mindee API Helper Library for Python
|
|
53
55
|
Quickly and easily connect to Mindee's API services using Python.
|
|
@@ -127,19 +129,25 @@ print(result.document)
|
|
|
127
129
|
```python
|
|
128
130
|
from mindee import Client, product
|
|
129
131
|
|
|
130
|
-
# Init a new client
|
|
132
|
+
# Init a new client
|
|
131
133
|
mindee_client = Client(api_key="my-api-key")
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
134
|
+
|
|
135
|
+
# Add your custom endpoint (document)
|
|
136
|
+
my_endpoint = mindee_client.create_endpoint(
|
|
137
|
+
account_name="my-account",
|
|
138
|
+
endpoint_name="my-endpoint",
|
|
135
139
|
)
|
|
136
140
|
|
|
137
141
|
# Load a file from disk
|
|
138
142
|
input_doc = mindee_client.source_from_path("/path/to/the/file.ext")
|
|
139
143
|
|
|
140
144
|
# Parse the file.
|
|
141
|
-
# The endpoint must be specified since it
|
|
142
|
-
result = parse(
|
|
145
|
+
# The endpoint must be specified since it cannot be determined from the class.
|
|
146
|
+
result = mindee_client.parse(
|
|
147
|
+
product.CustomV1,
|
|
148
|
+
input_doc,
|
|
149
|
+
endpoint=my_endpoint
|
|
150
|
+
)
|
|
143
151
|
|
|
144
152
|
# Print a brief summary of the parsed data
|
|
145
153
|
print(result.document)
|
|
@@ -158,12 +166,14 @@ Allows sending only certain pages in a PDF.
|
|
|
158
166
|
In this example we only send the first, penultimate and last pages:
|
|
159
167
|
|
|
160
168
|
```python
|
|
161
|
-
|
|
162
|
-
|
|
169
|
+
from mindee import Client, product, PageOptions
|
|
170
|
+
|
|
171
|
+
result = mindee_client.parse(
|
|
172
|
+
product.InvoiceV4,
|
|
163
173
|
input_source,
|
|
164
|
-
page_options=
|
|
174
|
+
page_options=PageOptions(
|
|
165
175
|
page_indexes=[0, -2, -1],
|
|
166
|
-
operation
|
|
176
|
+
operation=PageOptions.KEEP_ONLY,
|
|
167
177
|
on_min_pages=2
|
|
168
178
|
)
|
|
169
179
|
)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[](https://opensource.org/licenses/MIT) [](https://github.com/mindee/mindee-api-python) [](https://pypi.org/project/mindee/) [](https://pypi.org/project/mindee/)
|
|
1
|
+
[](https://opensource.org/licenses/MIT) [](https://github.com/mindee/mindee-api-python) [](https://pypi.org/project/mindee/) [](https://pypi.org/project/mindee/)
|
|
2
2
|
|
|
3
3
|
# Mindee API Helper Library for Python
|
|
4
4
|
Quickly and easily connect to Mindee's API services using Python.
|
|
@@ -78,19 +78,25 @@ print(result.document)
|
|
|
78
78
|
```python
|
|
79
79
|
from mindee import Client, product
|
|
80
80
|
|
|
81
|
-
# Init a new client
|
|
81
|
+
# Init a new client
|
|
82
82
|
mindee_client = Client(api_key="my-api-key")
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
|
|
84
|
+
# Add your custom endpoint (document)
|
|
85
|
+
my_endpoint = mindee_client.create_endpoint(
|
|
86
|
+
account_name="my-account",
|
|
87
|
+
endpoint_name="my-endpoint",
|
|
86
88
|
)
|
|
87
89
|
|
|
88
90
|
# Load a file from disk
|
|
89
91
|
input_doc = mindee_client.source_from_path("/path/to/the/file.ext")
|
|
90
92
|
|
|
91
93
|
# Parse the file.
|
|
92
|
-
# The endpoint must be specified since it
|
|
93
|
-
result = parse(
|
|
94
|
+
# The endpoint must be specified since it cannot be determined from the class.
|
|
95
|
+
result = mindee_client.parse(
|
|
96
|
+
product.CustomV1,
|
|
97
|
+
input_doc,
|
|
98
|
+
endpoint=my_endpoint
|
|
99
|
+
)
|
|
94
100
|
|
|
95
101
|
# Print a brief summary of the parsed data
|
|
96
102
|
print(result.document)
|
|
@@ -109,12 +115,14 @@ Allows sending only certain pages in a PDF.
|
|
|
109
115
|
In this example we only send the first, penultimate and last pages:
|
|
110
116
|
|
|
111
117
|
```python
|
|
112
|
-
|
|
113
|
-
|
|
118
|
+
from mindee import Client, product, PageOptions
|
|
119
|
+
|
|
120
|
+
result = mindee_client.parse(
|
|
121
|
+
product.InvoiceV4,
|
|
114
122
|
input_source,
|
|
115
|
-
page_options=
|
|
123
|
+
page_options=PageOptions(
|
|
116
124
|
page_indexes=[0, -2, -1],
|
|
117
|
-
operation
|
|
125
|
+
operation=PageOptions.KEEP_ONLY,
|
|
118
126
|
on_min_pages=2
|
|
119
127
|
)
|
|
120
128
|
)
|
|
@@ -22,8 +22,8 @@ class CommandConfig(Generic[TypeInference]):
|
|
|
22
22
|
|
|
23
23
|
help: str
|
|
24
24
|
doc_class: Type[TypeInference]
|
|
25
|
-
is_sync: bool
|
|
26
|
-
is_async: bool
|
|
25
|
+
is_sync: bool
|
|
26
|
+
is_async: bool
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
DOCUMENTS: Dict[str, CommandConfig] = {
|
|
@@ -31,60 +31,84 @@ DOCUMENTS: Dict[str, CommandConfig] = {
|
|
|
31
31
|
help="Barcode-reader tool",
|
|
32
32
|
doc_class=product.BarcodeReaderV1,
|
|
33
33
|
is_sync=True,
|
|
34
|
+
is_async=False,
|
|
34
35
|
),
|
|
35
36
|
"cropper": CommandConfig(
|
|
36
37
|
help="Cropper tool",
|
|
37
38
|
doc_class=product.CropperV1,
|
|
38
39
|
is_sync=True,
|
|
40
|
+
is_async=False,
|
|
39
41
|
),
|
|
40
42
|
"custom": CommandConfig(
|
|
41
43
|
help="Custom document type from API builder",
|
|
42
44
|
doc_class=product.CustomV1,
|
|
43
45
|
is_sync=True,
|
|
44
|
-
is_async=
|
|
46
|
+
is_async=False,
|
|
45
47
|
),
|
|
46
48
|
"eu-license-plate": CommandConfig(
|
|
47
49
|
help="EU License Plate",
|
|
48
50
|
doc_class=product.eu.LicensePlateV1,
|
|
49
51
|
is_sync=True,
|
|
52
|
+
is_async=False,
|
|
50
53
|
),
|
|
51
54
|
"financial-document": CommandConfig(
|
|
52
55
|
help="Financial Document (receipt or invoice)",
|
|
53
56
|
doc_class=product.FinancialDocumentV1,
|
|
54
57
|
is_sync=True,
|
|
58
|
+
is_async=False,
|
|
55
59
|
),
|
|
56
60
|
"fr-bank-account-details": CommandConfig(
|
|
57
61
|
help="FR Bank Account Details",
|
|
58
62
|
doc_class=product.fr.BankAccountDetailsV2,
|
|
59
63
|
is_sync=True,
|
|
64
|
+
is_async=False,
|
|
60
65
|
),
|
|
61
66
|
"fr-carte-grise": CommandConfig(
|
|
62
67
|
help="FR Carte Grise",
|
|
63
68
|
doc_class=product.fr.CarteGriseV1,
|
|
69
|
+
is_sync=True,
|
|
70
|
+
is_async=False,
|
|
64
71
|
),
|
|
65
72
|
"fr-carte-vitale": CommandConfig(
|
|
66
73
|
help="FR Carte Vitale",
|
|
67
74
|
doc_class=product.fr.CarteVitaleV1,
|
|
68
75
|
is_sync=True,
|
|
76
|
+
is_async=False,
|
|
69
77
|
),
|
|
70
78
|
"fr-id-card": CommandConfig(
|
|
71
79
|
help="FR ID Card",
|
|
72
80
|
doc_class=product.fr.IdCardV2,
|
|
73
81
|
is_sync=True,
|
|
82
|
+
is_async=False,
|
|
74
83
|
),
|
|
75
84
|
"fr-petrol-receipt": CommandConfig(
|
|
76
85
|
help="FR Petrol Receipt",
|
|
77
86
|
doc_class=product.fr.PetrolReceiptV1,
|
|
78
87
|
is_sync=True,
|
|
88
|
+
is_async=False,
|
|
89
|
+
),
|
|
90
|
+
"generated": CommandConfig(
|
|
91
|
+
help="Generated",
|
|
92
|
+
doc_class=product.GeneratedV1,
|
|
93
|
+
is_sync=True,
|
|
94
|
+
is_async=True,
|
|
79
95
|
),
|
|
80
96
|
"invoice": CommandConfig(
|
|
81
97
|
help="Invoice",
|
|
82
98
|
doc_class=product.InvoiceV4,
|
|
83
99
|
is_sync=True,
|
|
100
|
+
is_async=False,
|
|
101
|
+
),
|
|
102
|
+
"international-id": CommandConfig(
|
|
103
|
+
help="International ID",
|
|
104
|
+
doc_class=product.InternationalIdV1,
|
|
105
|
+
is_sync=False,
|
|
106
|
+
is_async=True,
|
|
84
107
|
),
|
|
85
108
|
"invoice-splitter": CommandConfig(
|
|
86
109
|
help="Invoice Splitter",
|
|
87
110
|
doc_class=product.InvoiceSplitterV1,
|
|
111
|
+
is_sync=False,
|
|
88
112
|
is_async=True,
|
|
89
113
|
),
|
|
90
114
|
"material-certificate": CommandConfig(
|
|
@@ -97,44 +121,149 @@ DOCUMENTS: Dict[str, CommandConfig] = {
|
|
|
97
121
|
help="Multi-receipts detector",
|
|
98
122
|
doc_class=product.MultiReceiptsDetectorV1,
|
|
99
123
|
is_sync=True,
|
|
124
|
+
is_async=False,
|
|
100
125
|
),
|
|
101
126
|
"passport": CommandConfig(
|
|
102
127
|
help="Passport",
|
|
103
128
|
doc_class=product.PassportV1,
|
|
104
129
|
is_sync=True,
|
|
130
|
+
is_async=False,
|
|
105
131
|
),
|
|
106
132
|
"proof-of-address": CommandConfig(
|
|
107
133
|
help="Proof of Address",
|
|
108
134
|
doc_class=product.ProofOfAddressV1,
|
|
109
135
|
is_sync=True,
|
|
136
|
+
is_async=False,
|
|
110
137
|
),
|
|
111
138
|
"receipt": CommandConfig(
|
|
112
139
|
help="Expense Receipt",
|
|
113
140
|
doc_class=product.ReceiptV5,
|
|
114
141
|
is_sync=True,
|
|
142
|
+
is_async=False,
|
|
115
143
|
),
|
|
116
144
|
"us-bank-check": CommandConfig(
|
|
117
145
|
help="US Bank Check",
|
|
118
146
|
doc_class=product.us.BankCheckV1,
|
|
119
147
|
is_sync=True,
|
|
148
|
+
is_async=False,
|
|
120
149
|
),
|
|
121
150
|
"us-driver-license": CommandConfig(
|
|
122
151
|
help="US Driver License",
|
|
123
152
|
doc_class=product.us.DriverLicenseV1,
|
|
124
153
|
is_sync=True,
|
|
154
|
+
is_async=False,
|
|
125
155
|
),
|
|
126
156
|
"us-w9": CommandConfig(
|
|
127
157
|
help="US W9",
|
|
128
158
|
doc_class=product.us.W9V1,
|
|
129
159
|
is_sync=True,
|
|
160
|
+
is_async=False,
|
|
130
161
|
),
|
|
131
162
|
}
|
|
132
163
|
|
|
133
164
|
|
|
165
|
+
class MindeeArgumentParser(ArgumentParser):
|
|
166
|
+
"""Custom parser to simplify adding various options."""
|
|
167
|
+
|
|
168
|
+
def add_main_options(self) -> None:
|
|
169
|
+
"""Adds main options for most parsings."""
|
|
170
|
+
self.add_argument(
|
|
171
|
+
"-k",
|
|
172
|
+
"--key",
|
|
173
|
+
dest="api_key",
|
|
174
|
+
help="API key for the account",
|
|
175
|
+
required=False,
|
|
176
|
+
default=None,
|
|
177
|
+
)
|
|
178
|
+
|
|
179
|
+
def add_display_options(self) -> None:
|
|
180
|
+
"""Adds options related to output/display of a document (parse, parse-queued)."""
|
|
181
|
+
self.add_argument(
|
|
182
|
+
"-o",
|
|
183
|
+
"--output-type",
|
|
184
|
+
dest="output_type",
|
|
185
|
+
choices=["summary", "raw", "parsed"],
|
|
186
|
+
default="summary",
|
|
187
|
+
help="Specify how to output the data.\n"
|
|
188
|
+
"- summary: a basic summary (default)\n"
|
|
189
|
+
"- raw: the raw HTTP response\n"
|
|
190
|
+
"- parsed: the validated and parsed data fields\n",
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
def add_sending_options(self) -> None:
|
|
194
|
+
"""Adds options for sending requests (parse, enqueue)."""
|
|
195
|
+
self.add_argument(
|
|
196
|
+
"-i",
|
|
197
|
+
"--input-type",
|
|
198
|
+
dest="input_type",
|
|
199
|
+
choices=["path", "file", "base64", "bytes", "url"],
|
|
200
|
+
default="path",
|
|
201
|
+
help="Specify how to handle the input.\n"
|
|
202
|
+
"- path: open a path (default).\n"
|
|
203
|
+
"- file: open as a file handle.\n"
|
|
204
|
+
"- base64: open a base64 encoded text file.\n"
|
|
205
|
+
"- bytes: open the contents as raw bytes.\n"
|
|
206
|
+
"- url: open an URL.",
|
|
207
|
+
)
|
|
208
|
+
self.add_argument(
|
|
209
|
+
"-c",
|
|
210
|
+
"--cut-doc",
|
|
211
|
+
dest="cut_doc",
|
|
212
|
+
action="store_true",
|
|
213
|
+
help="Cut document pages",
|
|
214
|
+
)
|
|
215
|
+
self.add_argument(
|
|
216
|
+
"-p",
|
|
217
|
+
"--pages-keep",
|
|
218
|
+
dest="doc_pages",
|
|
219
|
+
type=int,
|
|
220
|
+
default=5,
|
|
221
|
+
help="Number of document pages to keep, default: 5",
|
|
222
|
+
)
|
|
223
|
+
self.add_argument(dest="path", help="Full path to the file")
|
|
224
|
+
|
|
225
|
+
def add_feedback_options(self) -> None:
|
|
226
|
+
"""Adds the option to give feedback manually."""
|
|
227
|
+
self.add_argument(
|
|
228
|
+
dest="document_id",
|
|
229
|
+
help="Mindee UUID of the document.",
|
|
230
|
+
type=str,
|
|
231
|
+
)
|
|
232
|
+
self.add_argument(
|
|
233
|
+
dest="feedback",
|
|
234
|
+
type=json.loads,
|
|
235
|
+
help='Feedback JSON string to send, ex \'{"key": "value"}\'.',
|
|
236
|
+
)
|
|
237
|
+
|
|
238
|
+
def add_custom_options(self) -> None:
|
|
239
|
+
"""Adds options to custom-type documents."""
|
|
240
|
+
self.add_argument(
|
|
241
|
+
"-a",
|
|
242
|
+
"--account",
|
|
243
|
+
dest="account_name",
|
|
244
|
+
required=True,
|
|
245
|
+
help="API account name for the endpoint (required)",
|
|
246
|
+
)
|
|
247
|
+
self.add_argument(
|
|
248
|
+
"-e",
|
|
249
|
+
"--endpoint",
|
|
250
|
+
dest="endpoint_name",
|
|
251
|
+
help="API endpoint name (required)",
|
|
252
|
+
required=True,
|
|
253
|
+
)
|
|
254
|
+
self.add_argument(
|
|
255
|
+
"-v",
|
|
256
|
+
"--version",
|
|
257
|
+
default="1",
|
|
258
|
+
dest="api_version",
|
|
259
|
+
help="Version for the endpoint. If not set, use the latest version of the model.",
|
|
260
|
+
)
|
|
261
|
+
|
|
262
|
+
|
|
134
263
|
class MindeeParser:
|
|
135
264
|
"""Custom parser for the Mindee CLI."""
|
|
136
265
|
|
|
137
|
-
parser:
|
|
266
|
+
parser: MindeeArgumentParser
|
|
138
267
|
"""Parser options."""
|
|
139
268
|
parsed_args: Namespace
|
|
140
269
|
"""Stores attributes relating to parsing."""
|
|
@@ -151,12 +280,14 @@ class MindeeParser:
|
|
|
151
280
|
|
|
152
281
|
def __init__(
|
|
153
282
|
self,
|
|
154
|
-
parser: Optional[
|
|
283
|
+
parser: Optional[MindeeArgumentParser] = None,
|
|
155
284
|
parsed_args: Optional[Namespace] = None,
|
|
156
285
|
client: Optional[Client] = None,
|
|
157
286
|
document_info: Optional[CommandConfig] = None,
|
|
158
287
|
) -> None:
|
|
159
|
-
self.parser =
|
|
288
|
+
self.parser = (
|
|
289
|
+
parser if parser else MindeeArgumentParser(description="Mindee_API")
|
|
290
|
+
)
|
|
160
291
|
self.parsed_args = parsed_args if parsed_args else self._set_args()
|
|
161
292
|
self.client = (
|
|
162
293
|
client
|
|
@@ -182,7 +313,7 @@ class MindeeParser:
|
|
|
182
313
|
def call_feedback(self) -> None:
|
|
183
314
|
"""Sends feedback to an API."""
|
|
184
315
|
custom_endpoint: Optional[Endpoint] = None
|
|
185
|
-
if self.parsed_args.product_name
|
|
316
|
+
if self.parsed_args.product_name in ("custom", "generated"):
|
|
186
317
|
custom_endpoint = self.client.create_endpoint(
|
|
187
318
|
self.parsed_args.endpoint_name,
|
|
188
319
|
self.parsed_args.account_name,
|
|
@@ -234,16 +365,19 @@ class MindeeParser:
|
|
|
234
365
|
range(self.parsed_args.doc_pages), on_min_pages=0
|
|
235
366
|
)
|
|
236
367
|
custom_endpoint: Optional[Endpoint] = None
|
|
237
|
-
if self.parsed_args.product_name
|
|
368
|
+
if self.parsed_args.product_name in ("custom", "generated"):
|
|
369
|
+
include_words = False
|
|
238
370
|
custom_endpoint = self.client.create_endpoint(
|
|
239
371
|
self.parsed_args.endpoint_name,
|
|
240
372
|
self.parsed_args.account_name,
|
|
241
373
|
self.parsed_args.api_version,
|
|
242
374
|
)
|
|
375
|
+
else:
|
|
376
|
+
include_words = self.parsed_args.include_words
|
|
243
377
|
return self.client.parse(
|
|
244
|
-
self.document_info.doc_class,
|
|
245
|
-
self.input_doc,
|
|
246
|
-
|
|
378
|
+
product_class=self.document_info.doc_class,
|
|
379
|
+
input_source=self.input_doc,
|
|
380
|
+
include_words=include_words,
|
|
247
381
|
page_options=page_options,
|
|
248
382
|
endpoint=custom_endpoint,
|
|
249
383
|
)
|
|
@@ -256,21 +390,25 @@ class MindeeParser:
|
|
|
256
390
|
range(self.parsed_args.doc_pages), on_min_pages=0
|
|
257
391
|
)
|
|
258
392
|
custom_endpoint: Optional[Endpoint] = None
|
|
259
|
-
if self.parsed_args.product_name
|
|
393
|
+
if self.parsed_args.product_name in ("custom", "generated"):
|
|
394
|
+
include_words = False
|
|
260
395
|
custom_endpoint = self.client.create_endpoint(
|
|
261
396
|
self.parsed_args.endpoint_name,
|
|
262
397
|
self.parsed_args.account_name,
|
|
263
398
|
self.parsed_args.api_version,
|
|
264
399
|
)
|
|
400
|
+
else:
|
|
401
|
+
include_words = self.parsed_args.include_words
|
|
265
402
|
return self.client.enqueue_and_parse(
|
|
266
|
-
self.document_info.doc_class,
|
|
267
|
-
self.input_doc,
|
|
268
|
-
|
|
403
|
+
product_class=self.document_info.doc_class,
|
|
404
|
+
input_source=self.input_doc,
|
|
405
|
+
include_words=include_words,
|
|
269
406
|
page_options=page_options,
|
|
270
407
|
endpoint=custom_endpoint,
|
|
271
408
|
)
|
|
272
409
|
|
|
273
|
-
|
|
410
|
+
@staticmethod
|
|
411
|
+
def _doc_str(output_type: str, doc_response: Document) -> str:
|
|
274
412
|
if output_type == "parsed":
|
|
275
413
|
return json.dumps(doc_response, indent=2, default=serialize_for_json)
|
|
276
414
|
return str(doc_response)
|
|
@@ -291,11 +429,11 @@ class MindeeParser:
|
|
|
291
429
|
parse_subp = call_parser.add_parser("parse")
|
|
292
430
|
feedback_subp = call_parser.add_parser("feedback")
|
|
293
431
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
if name
|
|
298
|
-
|
|
432
|
+
parse_subp.add_main_options()
|
|
433
|
+
parse_subp.add_sending_options()
|
|
434
|
+
parse_subp.add_display_options()
|
|
435
|
+
if name in ("custom", "generated"):
|
|
436
|
+
parse_subp.add_custom_options()
|
|
299
437
|
else:
|
|
300
438
|
parse_subp.add_argument(
|
|
301
439
|
"-t",
|
|
@@ -316,126 +454,12 @@ class MindeeParser:
|
|
|
316
454
|
default=False,
|
|
317
455
|
)
|
|
318
456
|
|
|
319
|
-
|
|
320
|
-
|
|
457
|
+
feedback_subp.add_main_options()
|
|
458
|
+
feedback_subp.add_feedback_options()
|
|
321
459
|
|
|
322
460
|
parsed_args = self.parser.parse_args()
|
|
323
461
|
return parsed_args
|
|
324
462
|
|
|
325
|
-
def _add_main_options(self, parser: ArgumentParser) -> None:
|
|
326
|
-
"""
|
|
327
|
-
Adds main options for most parsings.
|
|
328
|
-
|
|
329
|
-
:param parser: current parser.
|
|
330
|
-
"""
|
|
331
|
-
parser.add_argument(
|
|
332
|
-
"-k",
|
|
333
|
-
"--key",
|
|
334
|
-
dest="api_key",
|
|
335
|
-
help="API key for the account",
|
|
336
|
-
required=False,
|
|
337
|
-
default=None,
|
|
338
|
-
)
|
|
339
|
-
|
|
340
|
-
def _add_display_options(self, parser: ArgumentParser) -> None:
|
|
341
|
-
"""
|
|
342
|
-
Adds options related to output/display of a document (parse, parse-queued).
|
|
343
|
-
|
|
344
|
-
:param parser: current parser.
|
|
345
|
-
"""
|
|
346
|
-
parser.add_argument(
|
|
347
|
-
"-o",
|
|
348
|
-
"--output-type",
|
|
349
|
-
dest="output_type",
|
|
350
|
-
choices=["summary", "raw", "parsed"],
|
|
351
|
-
default="summary",
|
|
352
|
-
help="Specify how to output the data.\n"
|
|
353
|
-
"- summary: a basic summary (default)\n"
|
|
354
|
-
"- raw: the raw HTTP response\n"
|
|
355
|
-
"- parsed: the validated and parsed data fields\n",
|
|
356
|
-
)
|
|
357
|
-
|
|
358
|
-
def _add_sending_options(self, parser: ArgumentParser) -> None:
|
|
359
|
-
"""
|
|
360
|
-
Adds options for sending requests (parse, enqueue).
|
|
361
|
-
|
|
362
|
-
:param parser: current parser.
|
|
363
|
-
"""
|
|
364
|
-
parser.add_argument(
|
|
365
|
-
"-i",
|
|
366
|
-
"--input-type",
|
|
367
|
-
dest="input_type",
|
|
368
|
-
choices=["path", "file", "base64", "bytes", "url"],
|
|
369
|
-
default="path",
|
|
370
|
-
help="Specify how to handle the input.\n"
|
|
371
|
-
"- path: open a path (default).\n"
|
|
372
|
-
"- file: open as a file handle.\n"
|
|
373
|
-
"- base64: open a base64 encoded text file.\n"
|
|
374
|
-
"- bytes: open the contents as raw bytes.\n"
|
|
375
|
-
"- url: open an URL.",
|
|
376
|
-
)
|
|
377
|
-
parser.add_argument(
|
|
378
|
-
"-c",
|
|
379
|
-
"--cut-doc",
|
|
380
|
-
dest="cut_doc",
|
|
381
|
-
action="store_true",
|
|
382
|
-
help="Cut document pages",
|
|
383
|
-
)
|
|
384
|
-
parser.add_argument(
|
|
385
|
-
"-p",
|
|
386
|
-
"--pages-keep",
|
|
387
|
-
dest="doc_pages",
|
|
388
|
-
type=int,
|
|
389
|
-
default=5,
|
|
390
|
-
help="Number of document pages to keep, default: 5",
|
|
391
|
-
)
|
|
392
|
-
parser.add_argument(dest="path", help="Full path to the file")
|
|
393
|
-
|
|
394
|
-
def _add_feedback_options(self, parser: ArgumentParser):
|
|
395
|
-
"""
|
|
396
|
-
Adds the option to give feedback manually.
|
|
397
|
-
|
|
398
|
-
:param parser: current parser.
|
|
399
|
-
"""
|
|
400
|
-
parser.add_argument(
|
|
401
|
-
dest="document_id",
|
|
402
|
-
help="Mindee UUID of the document.",
|
|
403
|
-
type=str,
|
|
404
|
-
)
|
|
405
|
-
parser.add_argument(
|
|
406
|
-
dest="feedback",
|
|
407
|
-
type=json.loads,
|
|
408
|
-
help='Feedback JSON string to send, ex \'{"key": "value"}\'.',
|
|
409
|
-
)
|
|
410
|
-
|
|
411
|
-
def _add_custom_options(self, parser: ArgumentParser):
|
|
412
|
-
"""
|
|
413
|
-
Adds options to custom-type documents.
|
|
414
|
-
|
|
415
|
-
:param parser: current parser.
|
|
416
|
-
"""
|
|
417
|
-
parser.add_argument(
|
|
418
|
-
"-a",
|
|
419
|
-
"--account",
|
|
420
|
-
dest="account_name",
|
|
421
|
-
required=True,
|
|
422
|
-
help="API account name for the endpoint (required)",
|
|
423
|
-
)
|
|
424
|
-
parser.add_argument(
|
|
425
|
-
"-e",
|
|
426
|
-
"--endpoint",
|
|
427
|
-
dest="endpoint_name",
|
|
428
|
-
help="API endpoint name (required)",
|
|
429
|
-
required=True,
|
|
430
|
-
)
|
|
431
|
-
parser.add_argument(
|
|
432
|
-
"-v",
|
|
433
|
-
"--version",
|
|
434
|
-
default="1",
|
|
435
|
-
dest="api_version",
|
|
436
|
-
help="Version for the endpoint. If not set, use the latest version of the model.",
|
|
437
|
-
)
|
|
438
|
-
|
|
439
463
|
def _get_input_doc(self) -> Union[LocalInputSource, UrlInputSource]:
|
|
440
464
|
"""Loads an input document."""
|
|
441
465
|
if self.parsed_args.input_type == "file":
|
|
@@ -470,7 +494,7 @@ class MindeeParser:
|
|
|
470
494
|
else:
|
|
471
495
|
if (
|
|
472
496
|
not self.parsed_args.feedback
|
|
473
|
-
or
|
|
497
|
+
or "feedback" not in self.parsed_args.feedback
|
|
474
498
|
):
|
|
475
499
|
raise MindeeClientError("Invalid feedback.")
|
|
476
500
|
if not json_doc or "feedback" not in json_doc:
|