From f66882346b15836437d88d61fc281efc27d2d760 Mon Sep 17 00:00:00 2001 From: sebastianMindee Date: Wed, 12 Mar 2025 15:53:36 +0100 Subject: [PATCH 1/9] :coffin: deprecate Receipt V4 & upgrade imports --- mindee/commands/cli_products.py | 124 ++++++++++++++++++++------------ mindee/product/__init__.py | 23 +++--- 2 files changed, 92 insertions(+), 55 deletions(-) diff --git a/mindee/commands/cli_products.py b/mindee/commands/cli_products.py index 7bb377ea..116b3a07 100644 --- a/mindee/commands/cli_products.py +++ b/mindee/commands/cli_products.py @@ -16,29 +16,47 @@ class CommandConfig(Generic[TypeInference]): PRODUCTS: Dict[str, CommandConfig] = { - # "address-proof": CommandConfig( - # help="Address Proof", - # doc_class=product.AddressProofV1, - # is_sync=False, - # is_async=True, - # ), + "custom": CommandConfig( + help="Custom document type from API builder", + doc_class=product.CustomV1, + is_sync=True, + is_async=False, + ), + "generated": CommandConfig( + help="Generated products from docTI", + doc_class=product.GeneratedV1, + is_sync=True, + is_async=True, + ), "barcode-reader": CommandConfig( - help="Barcode-reader tool", + help="Barcode Reader", doc_class=product.BarcodeReaderV1, is_sync=True, is_async=False, ), + "bill-of-lading": CommandConfig( + help="Bill of Lading", + doc_class=product.BillOfLadingV1, + is_sync=False, + is_async=True, + ), + "business-card": CommandConfig( + help="Business Card", + doc_class=product.BusinessCardV1, + is_sync=False, + is_async=True, + ), "cropper": CommandConfig( - help="Cropper tool", + help="Cropper", doc_class=product.CropperV1, is_sync=True, is_async=False, ), - "custom": CommandConfig( - help="Custom document type from API builder", - doc_class=product.CustomV1, - is_sync=True, - is_async=False, + "delivery-note": CommandConfig( + help="Delivery note", + doc_class=product.DeliveryNoteV1, + is_sync=False, + is_async=True, ), "driver-license": CommandConfig( help="Driver License", @@ -46,52 +64,64 @@ class CommandConfig(Generic[TypeInference]): is_sync=False, is_async=True, ), + "eu-license-plate": CommandConfig( + help="License Plate", + doc_class=product.eu.LicensePlateV1, + is_sync=True, + is_async=False, + ), "financial-document": CommandConfig( - help="Financial Document (receipt or invoice)", + help="Financial Document", doc_class=product.FinancialDocumentV1, is_sync=True, is_async=True, ), "fr-bank-account-details": CommandConfig( - help="FR Bank Account Details", + help="Bank Account Details", doc_class=product.fr.BankAccountDetailsV2, is_sync=True, is_async=False, ), "fr-carte-grise": CommandConfig( - help="FR Carte Grise", + help="Carte Grise", doc_class=product.fr.CarteGriseV1, is_sync=True, is_async=False, ), + "fr-energy-bill": CommandConfig( + help="Energy Bill", + doc_class=product.fr.EnergyBillV1, + is_sync=False, + is_async=True, + ), "fr-health-card": CommandConfig( - help="FR Health Card", + help="Health Card", doc_class=product.fr.HealthCardV1, is_sync=False, is_async=True, ), - "fr-id-card": CommandConfig( - help="FR ID Card", + "fr-carte-nationale-d-identite": CommandConfig( + help="Carte Nationale d'Identité", doc_class=product.fr.IdCardV2, is_sync=True, is_async=False, ), "fr-payslip": CommandConfig( - help="FR Payslip", + help="Payslip", doc_class=product.fr.PayslipV3, is_sync=False, is_async=True, ), - "fr-petrol-receipt": CommandConfig( - help="FR Petrol Receipt", - doc_class=product.fr.PetrolReceiptV1, - is_sync=True, - is_async=False, + "ind-passport-india": CommandConfig( + help="Passport - India", + doc_class=product.ind.IndianPassportV1, + is_sync=False, + is_async=True, ), - "generated": CommandConfig( - help="Generated", - doc_class=product.GeneratedV1, - is_sync=True, + "international-id": CommandConfig( + help="International ID", + doc_class=product.InternationalIdV2, + is_sync=False, is_async=True, ), "invoice": CommandConfig( @@ -100,12 +130,6 @@ class CommandConfig(Generic[TypeInference]): is_sync=True, is_async=True, ), - "international-id": CommandConfig( - help="International ID", - doc_class=product.InternationalIdV2, - is_sync=False, - is_async=True, - ), "invoice-splitter": CommandConfig( help="Invoice Splitter", doc_class=product.InvoiceSplitterV1, @@ -118,12 +142,18 @@ class CommandConfig(Generic[TypeInference]): is_sync=False, is_async=True, ), - "multi-receipts": CommandConfig( - help="Multi-receipts detector", + "multi-receipts-detector": CommandConfig( + help="Multi Receipts Detector", doc_class=product.MultiReceiptsDetectorV1, is_sync=True, is_async=False, ), + "nutrition-facts-label": CommandConfig( + help="Nutrition Facts Label", + doc_class=product.NutritionFactsLabelV1, + is_sync=False, + is_async=True, + ), "passport": CommandConfig( help="Passport", doc_class=product.PassportV1, @@ -131,10 +161,10 @@ class CommandConfig(Generic[TypeInference]): is_async=False, ), "receipt": CommandConfig( - help="Expense Receipt", + help="Receipt", doc_class=product.ReceiptV5, is_sync=True, - is_async=False, + is_async=True, ), "resume": CommandConfig( help="Resume", @@ -143,25 +173,25 @@ class CommandConfig(Generic[TypeInference]): is_async=True, ), "us-bank-check": CommandConfig( - help="US Bank Check", + help="Bank Check", doc_class=product.us.BankCheckV1, is_sync=True, is_async=False, ), - "us-mail": CommandConfig( - help="US Mail", - doc_class=product.us.UsMailV3, + "us-healthcare-card": CommandConfig( + help="Healthcare Card", + doc_class=product.us.HealthcareCardV1, is_sync=False, is_async=True, ), - "us-healthcare-card": CommandConfig( - help="US Healthcare Card", - doc_class=product.us.HealthcareCardV1, + "us-us-mail": CommandConfig( + help="US Mail", + doc_class=product.us.UsMailV3, is_sync=False, is_async=True, ), "us-w9": CommandConfig( - help="US W9", + help="W9", doc_class=product.us.W9V1, is_sync=True, is_async=False, diff --git a/mindee/product/__init__.py b/mindee/product/__init__.py index 98f6188c..a0ce804e 100644 --- a/mindee/product/__init__.py +++ b/mindee/product/__init__.py @@ -10,7 +10,7 @@ BillOfLadingV1Shipper, ) from mindee.product.business_card import BusinessCardV1, BusinessCardV1Document -from mindee.product.cropper import CropperV1, CropperV1Document +from mindee.product.cropper import CropperV1, CropperV1Document, CropperV1Page from mindee.product.custom import CustomV1, CustomV1Document, CustomV1Page from mindee.product.delivery_note import DeliveryNoteV1, DeliveryNoteV1Document from mindee.product.driver_license import DriverLicenseV1, DriverLicenseV1Document @@ -22,7 +22,11 @@ from mindee.product.generated import GeneratedV1, GeneratedV1Document, GeneratedV1Page from mindee.product.international_id import InternationalIdV2, InternationalIdV2Document from mindee.product.invoice import InvoiceV4, InvoiceV4Document, InvoiceV4LineItem -from mindee.product.invoice_splitter import InvoiceSplitterV1, InvoiceSplitterV1Document +from mindee.product.invoice_splitter import ( + InvoiceSplitterV1, + InvoiceSplitterV1Document, + InvoiceSplitterV1InvoicePageGroup, +) from mindee.product.material_certificate import ( MaterialCertificateV1, MaterialCertificateV1Document, @@ -49,10 +53,13 @@ NutritionFactsLabelV1TransFat, ) from mindee.product.passport import PassportV1, PassportV1Document -from mindee.product.proof_of_address import ProofOfAddressV1, ProofOfAddressV1Document -from mindee.product.receipt import ( - ReceiptV5, - ReceiptV5Document, - ReceiptV5LineItem, +from mindee.product.receipt import ReceiptV5, ReceiptV5Document, ReceiptV5LineItem +from mindee.product.resume import ( + ResumeV1, + ResumeV1Certificate, + ResumeV1Document, + ResumeV1Education, + ResumeV1Language, + ResumeV1ProfessionalExperience, + ResumeV1SocialNetworksUrl, ) -from mindee.product.resume import ResumeV1, ResumeV1Document From c76076af7503f9aa82493172a37c2c0ba64b013c Mon Sep 17 00:00:00 2001 From: sebastianMindee Date: Thu, 13 Mar 2025 09:46:55 +0100 Subject: [PATCH 2/9] tmp --- mindee/product/__init__.py | 134 +++++++++++++++++++++++++++++++------ 1 file changed, 113 insertions(+), 21 deletions(-) diff --git a/mindee/product/__init__.py b/mindee/product/__init__.py index a0ce804e..564938af 100644 --- a/mindee/product/__init__.py +++ b/mindee/product/__init__.py @@ -1,65 +1,157 @@ -from mindee.product import fr, ind, us -from mindee.product.barcode_reader import BarcodeReaderV1, BarcodeReaderV1Document -from mindee.product.bill_of_lading import ( - BillOfLadingV1, +from mindee.product import eu, fr, ind, us +from mindee.product.barcode_reader.barcode_reader_v1 import BarcodeReaderV1 +from mindee.product.barcode_reader.barcode_reader_v1_document import ( + BarcodeReaderV1Document, +) +from mindee.product.bill_of_lading.bill_of_lading_v1 import BillOfLadingV1 +from mindee.product.bill_of_lading.bill_of_lading_v1_carrier import ( BillOfLadingV1Carrier, +) +from mindee.product.bill_of_lading.bill_of_lading_v1_carrier_item import ( BillOfLadingV1CarrierItem, +) +from mindee.product.bill_of_lading.bill_of_lading_v1_consignee import ( BillOfLadingV1Consignee, +) +from mindee.product.bill_of_lading.bill_of_lading_v1_document import ( BillOfLadingV1Document, +) +from mindee.product.bill_of_lading.bill_of_lading_v1_notify_party import ( BillOfLadingV1NotifyParty, +) +from mindee.product.bill_of_lading.bill_of_lading_v1_shipper import ( BillOfLadingV1Shipper, ) -from mindee.product.business_card import BusinessCardV1, BusinessCardV1Document -from mindee.product.cropper import CropperV1, CropperV1Document, CropperV1Page +from mindee.product.business_card.business_card_v1 import BusinessCardV1 +from mindee.product.business_card.business_card_v1_document import ( + BusinessCardV1Document, +) +from mindee.product.cropper.cropper_v1 import CropperV1 +from mindee.product.cropper.cropper_v1_document import ( + CropperV1Document, +) +from mindee.product.cropper.cropper_v1_page import ( + CropperV1Page, +) from mindee.product.custom import CustomV1, CustomV1Document, CustomV1Page -from mindee.product.delivery_note import DeliveryNoteV1, DeliveryNoteV1Document -from mindee.product.driver_license import DriverLicenseV1, DriverLicenseV1Document -from mindee.product.financial_document import ( - FinancialDocumentV1, +from mindee.product.delivery_note.delivery_note_v1 import DeliveryNoteV1 +from mindee.product.delivery_note.delivery_note_v1_document import ( + DeliveryNoteV1Document, +) +from mindee.product.driver_license.driver_license_v1 import DriverLicenseV1 +from mindee.product.driver_license.driver_license_v1_document import ( + DriverLicenseV1Document, +) +from mindee.product.financial_document.financial_document_v1 import FinancialDocumentV1 +from mindee.product.financial_document.financial_document_v1_document import ( FinancialDocumentV1Document, +) +from mindee.product.financial_document.financial_document_v1_line_item import ( FinancialDocumentV1LineItem, ) from mindee.product.generated import GeneratedV1, GeneratedV1Document, GeneratedV1Page -from mindee.product.international_id import InternationalIdV2, InternationalIdV2Document -from mindee.product.invoice import InvoiceV4, InvoiceV4Document, InvoiceV4LineItem -from mindee.product.invoice_splitter import ( - InvoiceSplitterV1, +from mindee.product.international_id.international_id_v2 import InternationalIdV2 +from mindee.product.international_id.international_id_v2_document import ( + InternationalIdV2Document, +) +from mindee.product.invoice.invoice_v4 import InvoiceV4 +from mindee.product.invoice.invoice_v4_document import ( + InvoiceV4Document, +) +from mindee.product.invoice.invoice_v4_line_item import ( + InvoiceV4LineItem, +) +from mindee.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 +from mindee.product.invoice_splitter.invoice_splitter_v1_document import ( InvoiceSplitterV1Document, +) +from mindee.product.invoice_splitter.invoice_splitter_v1_invoice_page_group import ( InvoiceSplitterV1InvoicePageGroup, ) -from mindee.product.material_certificate import ( +from mindee.product.material_certificate.material_certificate_v1 import ( MaterialCertificateV1, +) +from mindee.product.material_certificate.material_certificate_v1_document import ( MaterialCertificateV1Document, ) -from mindee.product.multi_receipts_detector import ( +from mindee.product.multi_receipts_detector.multi_receipts_detector_v1 import ( MultiReceiptsDetectorV1, +) +from mindee.product.multi_receipts_detector.multi_receipts_detector_v1_document import ( MultiReceiptsDetectorV1Document, ) -from mindee.product.nutrition_facts_label import ( +from mindee.product.nutrition_facts_label.nutrition_facts_label_v1 import ( NutritionFactsLabelV1, +) +from mindee.product.nutrition_facts_label.nutrition_facts_label_v1_added_sugar import ( NutritionFactsLabelV1AddedSugar, +) +from mindee.product.nutrition_facts_label.nutrition_facts_label_v1_calorie import ( NutritionFactsLabelV1Calorie, +) +from mindee.product.nutrition_facts_label.nutrition_facts_label_v1_cholesterol import ( NutritionFactsLabelV1Cholesterol, +) +from mindee.product.nutrition_facts_label.nutrition_facts_label_v1_dietary_fiber import ( NutritionFactsLabelV1DietaryFiber, +) +from mindee.product.nutrition_facts_label.nutrition_facts_label_v1_document import ( NutritionFactsLabelV1Document, +) +from mindee.product.nutrition_facts_label.nutrition_facts_label_v1_nutrient import ( NutritionFactsLabelV1Nutrient, +) +from mindee.product.nutrition_facts_label.nutrition_facts_label_v1_protein import ( NutritionFactsLabelV1Protein, +) +from mindee.product.nutrition_facts_label.nutrition_facts_label_v1_saturated_fat import ( NutritionFactsLabelV1SaturatedFat, +) +from mindee.product.nutrition_facts_label.nutrition_facts_label_v1_serving_size import ( NutritionFactsLabelV1ServingSize, +) +from mindee.product.nutrition_facts_label.nutrition_facts_label_v1_sodium import ( NutritionFactsLabelV1Sodium, +) +from mindee.product.nutrition_facts_label.nutrition_facts_label_v1_total_carbohydrate import ( NutritionFactsLabelV1TotalCarbohydrate, +) +from mindee.product.nutrition_facts_label.nutrition_facts_label_v1_total_fat import ( NutritionFactsLabelV1TotalFat, +) +from mindee.product.nutrition_facts_label.nutrition_facts_label_v1_total_sugar import ( NutritionFactsLabelV1TotalSugar, +) +from mindee.product.nutrition_facts_label.nutrition_facts_label_v1_trans_fat import ( NutritionFactsLabelV1TransFat, ) -from mindee.product.passport import PassportV1, PassportV1Document -from mindee.product.receipt import ReceiptV5, ReceiptV5Document, ReceiptV5LineItem -from mindee.product.resume import ( - ResumeV1, +from mindee.product.passport.passport_v1 import PassportV1 +from mindee.product.passport.passport_v1_document import ( + PassportV1Document, +) +from mindee.product.receipt.receipt_v5 import ReceiptV5 +from mindee.product.receipt.receipt_v5_document import ( + ReceiptV5Document, +) +from mindee.product.receipt.receipt_v5_line_item import ( + ReceiptV5LineItem, +) +from mindee.product.resume.resume_v1 import ResumeV1 +from mindee.product.resume.resume_v1_certificate import ( ResumeV1Certificate, +) +from mindee.product.resume.resume_v1_document import ( ResumeV1Document, +) +from mindee.product.resume.resume_v1_education import ( ResumeV1Education, +) +from mindee.product.resume.resume_v1_language import ( ResumeV1Language, +) +from mindee.product.resume.resume_v1_professional_experience import ( ResumeV1ProfessionalExperience, +) +from mindee.product.resume.resume_v1_social_networks_url import ( ResumeV1SocialNetworksUrl, ) From a82b3de0bf775271703ec2944dfec550fa889ad9 Mon Sep 17 00:00:00 2001 From: sebastianMindee Date: Thu, 13 Mar 2025 18:13:26 +0100 Subject: [PATCH 3/9] :coffin: remove support for US Driver License & EU Driver License --- docs/product/fr/petrol_receipt_v1.rst | 23 ----- docs/product/proof_of_address_v1.rst | 15 --- mindee/product/cropper/__init__.py | 8 +- mindee/product/eu/__init__.py | 4 + mindee/product/fr/__init__.py | 98 +++++++++++++------ .../fr/bank_account_details/__init__.py | 6 -- mindee/product/fr/carte_grise/__init__.py | 4 +- mindee/product/fr/energy_bill/__init__.py | 4 +- mindee/product/fr/health_card/__init__.py | 4 +- mindee/product/fr/id_card/__init__.py | 11 ++- mindee/product/fr/payslip/__init__.py | 44 +++++---- mindee/product/invoice/__init__.py | 8 +- mindee/product/passport/__init__.py | 4 +- mindee/product/receipt/__init__.py | 8 +- mindee/product/resume/__init__.py | 16 ++- mindee/product/us/__init__.py | 30 +++--- mindee/product/us/bank_check/__init__.py | 8 +- mindee/product/us/us_mail/__init__.py | 14 ++- mindee/product/us/w9/__init__.py | 8 +- mindee/tests/product/eu/__init__.py | 0 mindee/tests/product/fr/__init__.py | 0 mindee/tests/product/ind/__init__.py | 0 mindee/tests/product/us/__init__.py | 0 23 files changed, 180 insertions(+), 137 deletions(-) delete mode 100644 docs/product/fr/petrol_receipt_v1.rst delete mode 100644 docs/product/proof_of_address_v1.rst create mode 100644 mindee/product/eu/__init__.py create mode 100644 mindee/tests/product/eu/__init__.py create mode 100644 mindee/tests/product/fr/__init__.py create mode 100644 mindee/tests/product/ind/__init__.py create mode 100644 mindee/tests/product/us/__init__.py diff --git a/docs/product/fr/petrol_receipt_v1.rst b/docs/product/fr/petrol_receipt_v1.rst deleted file mode 100644 index 91059b76..00000000 --- a/docs/product/fr/petrol_receipt_v1.rst +++ /dev/null @@ -1,23 +0,0 @@ -Petrol Receipt V1 ------------------ - -**Sample Code:** - -.. literalinclude:: /extras/code_samples/petrol_receipts_v1.txt - :language: Python - -.. autoclass:: mindee.product.fr.petrol_receipt.petrol_receipt_v1.PetrolReceiptV1 - :members: - :inherited-members: - -.. autoclass:: mindee.product.fr.petrol_receipt.petrol_receipt_v1_document.PetrolReceiptV1Document - :members: - :inherited-members: - -.. autoclass:: mindee.product.fr.petrol_receipt.petrol_receipt_v1_fuel.PetrolReceiptV1Fuel - :members: - :inherited-members: - -.. autoclass:: mindee.product.fr.petrol_receipt.petrol_receipt_v1_total.PetrolReceiptV1Total - :members: - :inherited-members: diff --git a/docs/product/proof_of_address_v1.rst b/docs/product/proof_of_address_v1.rst deleted file mode 100644 index 4260ff40..00000000 --- a/docs/product/proof_of_address_v1.rst +++ /dev/null @@ -1,15 +0,0 @@ -Proof of Address V1 -------------------- - -**Sample Code:** - -.. literalinclude:: /extras/code_samples/proof_of_address_v1.txt - :language: Python - -.. autoclass:: mindee.product.proof_of_address.proof_of_address_v1.ProofOfAddressV1 - :members: - :inherited-members: - -.. autoclass:: mindee.product.proof_of_address.proof_of_address_v1_document.ProofOfAddressV1Document - :members: - :inherited-members: diff --git a/mindee/product/cropper/__init__.py b/mindee/product/cropper/__init__.py index dd3f3e2a..8069a29e 100644 --- a/mindee/product/cropper/__init__.py +++ b/mindee/product/cropper/__init__.py @@ -1,3 +1,7 @@ from mindee.product.cropper.cropper_v1 import CropperV1 -from mindee.product.cropper.cropper_v1_document import CropperV1Document -from mindee.product.cropper.cropper_v1_page import CropperV1Page +from mindee.product.cropper.cropper_v1_document import ( + CropperV1Document, +) +from mindee.product.cropper.cropper_v1_page import ( + CropperV1Page, +) diff --git a/mindee/product/eu/__init__.py b/mindee/product/eu/__init__.py new file mode 100644 index 00000000..f86d3f6d --- /dev/null +++ b/mindee/product/eu/__init__.py @@ -0,0 +1,4 @@ +from mindee.product.eu.license_plate.license_plate_v1 import LicensePlateV1 +from mindee.product.eu.license_plate.license_plate_v1_document import ( + LicensePlateV1Document, +) diff --git a/mindee/product/fr/__init__.py b/mindee/product/fr/__init__.py index 87039785..8cfcc41d 100644 --- a/mindee/product/fr/__init__.py +++ b/mindee/product/fr/__init__.py @@ -14,9 +14,13 @@ BankAccountDetailsV2Document, ) from mindee.product.fr.carte_grise.carte_grise_v1 import CarteGriseV1 -from mindee.product.fr.carte_grise.carte_grise_v1_document import CarteGriseV1Document +from mindee.product.fr.carte_grise.carte_grise_v1_document import ( + CarteGriseV1Document, +) from mindee.product.fr.energy_bill.energy_bill_v1 import EnergyBillV1 -from mindee.product.fr.energy_bill.energy_bill_v1_document import EnergyBillV1Document +from mindee.product.fr.energy_bill.energy_bill_v1_document import ( + EnergyBillV1Document, +) from mindee.product.fr.energy_bill.energy_bill_v1_energy_consumer import ( EnergyBillV1EnergyConsumer, ) @@ -36,42 +40,76 @@ EnergyBillV1TaxesAndContribution, ) from mindee.product.fr.health_card.health_card_v1 import HealthCardV1 -from mindee.product.fr.health_card.health_card_v1_document import HealthCardV1Document +from mindee.product.fr.health_card.health_card_v1_document import ( + HealthCardV1Document, +) from mindee.product.fr.id_card.id_card_v1 import IdCardV1 -from mindee.product.fr.id_card.id_card_v1_document import IdCardV1Document -from mindee.product.fr.id_card.id_card_v1_page import IdCardV1Page +from mindee.product.fr.id_card.id_card_v1_document import ( + IdCardV1Document, +) +from mindee.product.fr.id_card.id_card_v1_page import ( + IdCardV1Page, +) from mindee.product.fr.id_card.id_card_v2 import IdCardV2 -from mindee.product.fr.id_card.id_card_v2_document import IdCardV2Document -from mindee.product.fr.id_card.id_card_v2_page import IdCardV2Page +from mindee.product.fr.id_card.id_card_v2_document import ( + IdCardV2Document, +) +from mindee.product.fr.id_card.id_card_v2_page import ( + IdCardV2Page, +) from mindee.product.fr.payslip.payslip_v2 import PayslipV2 from mindee.product.fr.payslip.payslip_v2_bank_account_detail import ( PayslipV2BankAccountDetail, ) -from mindee.product.fr.payslip.payslip_v2_document import PayslipV2Document -from mindee.product.fr.payslip.payslip_v2_employee import PayslipV2Employee -from mindee.product.fr.payslip.payslip_v2_employer import PayslipV2Employer -from mindee.product.fr.payslip.payslip_v2_employment import PayslipV2Employment -from mindee.product.fr.payslip.payslip_v2_pay_detail import PayslipV2PayDetail -from mindee.product.fr.payslip.payslip_v2_pay_period import PayslipV2PayPeriod -from mindee.product.fr.payslip.payslip_v2_pto import PayslipV2Pto -from mindee.product.fr.payslip.payslip_v2_salary_detail import PayslipV2SalaryDetail +from mindee.product.fr.payslip.payslip_v2_document import ( + PayslipV2Document, +) +from mindee.product.fr.payslip.payslip_v2_employee import ( + PayslipV2Employee, +) +from mindee.product.fr.payslip.payslip_v2_employer import ( + PayslipV2Employer, +) +from mindee.product.fr.payslip.payslip_v2_employment import ( + PayslipV2Employment, +) +from mindee.product.fr.payslip.payslip_v2_pay_detail import ( + PayslipV2PayDetail, +) +from mindee.product.fr.payslip.payslip_v2_pay_period import ( + PayslipV2PayPeriod, +) +from mindee.product.fr.payslip.payslip_v2_pto import ( + PayslipV2Pto, +) +from mindee.product.fr.payslip.payslip_v2_salary_detail import ( + PayslipV2SalaryDetail, +) from mindee.product.fr.payslip.payslip_v3 import PayslipV3 from mindee.product.fr.payslip.payslip_v3_bank_account_detail import ( PayslipV3BankAccountDetail, ) -from mindee.product.fr.payslip.payslip_v3_document import PayslipV3Document -from mindee.product.fr.payslip.payslip_v3_employee import PayslipV3Employee -from mindee.product.fr.payslip.payslip_v3_employer import PayslipV3Employer -from mindee.product.fr.payslip.payslip_v3_employment import PayslipV3Employment -from mindee.product.fr.payslip.payslip_v3_paid_time_off import PayslipV3PaidTimeOff -from mindee.product.fr.payslip.payslip_v3_pay_detail import PayslipV3PayDetail -from mindee.product.fr.payslip.payslip_v3_pay_period import PayslipV3PayPeriod -from mindee.product.fr.payslip.payslip_v3_salary_detail import PayslipV3SalaryDetail -from mindee.product.fr.petrol_receipt.petrol_receipt_v1 import PetrolReceiptV1 -from mindee.product.fr.petrol_receipt.petrol_receipt_v1_document import ( - PetrolReceiptV1Document, -) -from mindee.product.fr.petrol_receipt.petrol_receipt_v1_fuel import PetrolReceiptV1Fuel -from mindee.product.fr.petrol_receipt.petrol_receipt_v1_total import ( - PetrolReceiptV1Total, +from mindee.product.fr.payslip.payslip_v3_document import ( + PayslipV3Document, +) +from mindee.product.fr.payslip.payslip_v3_employee import ( + PayslipV3Employee, +) +from mindee.product.fr.payslip.payslip_v3_employer import ( + PayslipV3Employer, +) +from mindee.product.fr.payslip.payslip_v3_employment import ( + PayslipV3Employment, +) +from mindee.product.fr.payslip.payslip_v3_paid_time_off import ( + PayslipV3PaidTimeOff, +) +from mindee.product.fr.payslip.payslip_v3_pay_detail import ( + PayslipV3PayDetail, +) +from mindee.product.fr.payslip.payslip_v3_pay_period import ( + PayslipV3PayPeriod, +) +from mindee.product.fr.payslip.payslip_v3_salary_detail import ( + PayslipV3SalaryDetail, ) diff --git a/mindee/product/fr/bank_account_details/__init__.py b/mindee/product/fr/bank_account_details/__init__.py index 80beacdc..664ede42 100644 --- a/mindee/product/fr/bank_account_details/__init__.py +++ b/mindee/product/fr/bank_account_details/__init__.py @@ -1,9 +1,3 @@ -from mindee.product.fr.bank_account_details.bank_account_details_v1 import ( - BankAccountDetailsV1, -) -from mindee.product.fr.bank_account_details.bank_account_details_v1_document import ( - BankAccountDetailsV1Document, -) from mindee.product.fr.bank_account_details.bank_account_details_v2 import ( BankAccountDetailsV2, ) diff --git a/mindee/product/fr/carte_grise/__init__.py b/mindee/product/fr/carte_grise/__init__.py index ef0e2ce1..1b93152b 100644 --- a/mindee/product/fr/carte_grise/__init__.py +++ b/mindee/product/fr/carte_grise/__init__.py @@ -1,2 +1,4 @@ from mindee.product.fr.carte_grise.carte_grise_v1 import CarteGriseV1 -from mindee.product.fr.carte_grise.carte_grise_v1_document import CarteGriseV1Document +from mindee.product.fr.carte_grise.carte_grise_v1_document import ( + CarteGriseV1Document, +) diff --git a/mindee/product/fr/energy_bill/__init__.py b/mindee/product/fr/energy_bill/__init__.py index b41e135e..e633eb01 100644 --- a/mindee/product/fr/energy_bill/__init__.py +++ b/mindee/product/fr/energy_bill/__init__.py @@ -1,5 +1,7 @@ from mindee.product.fr.energy_bill.energy_bill_v1 import EnergyBillV1 -from mindee.product.fr.energy_bill.energy_bill_v1_document import EnergyBillV1Document +from mindee.product.fr.energy_bill.energy_bill_v1_document import ( + EnergyBillV1Document, +) from mindee.product.fr.energy_bill.energy_bill_v1_energy_consumer import ( EnergyBillV1EnergyConsumer, ) diff --git a/mindee/product/fr/health_card/__init__.py b/mindee/product/fr/health_card/__init__.py index e8be9b7b..da216eb0 100644 --- a/mindee/product/fr/health_card/__init__.py +++ b/mindee/product/fr/health_card/__init__.py @@ -1,2 +1,4 @@ from mindee.product.fr.health_card.health_card_v1 import HealthCardV1 -from mindee.product.fr.health_card.health_card_v1_document import HealthCardV1Document +from mindee.product.fr.health_card.health_card_v1_document import ( + HealthCardV1Document, +) diff --git a/mindee/product/fr/id_card/__init__.py b/mindee/product/fr/id_card/__init__.py index 39972a13..d14b6913 100644 --- a/mindee/product/fr/id_card/__init__.py +++ b/mindee/product/fr/id_card/__init__.py @@ -1,6 +1,7 @@ -from mindee.product.fr.id_card.id_card_v1 import IdCardV1 -from mindee.product.fr.id_card.id_card_v1_document import IdCardV1Document -from mindee.product.fr.id_card.id_card_v1_page import IdCardV1Page from mindee.product.fr.id_card.id_card_v2 import IdCardV2 -from mindee.product.fr.id_card.id_card_v2_document import IdCardV2Document -from mindee.product.fr.id_card.id_card_v2_page import IdCardV2Page +from mindee.product.fr.id_card.id_card_v2_document import ( + IdCardV2Document, +) +from mindee.product.fr.id_card.id_card_v2_page import ( + IdCardV2Page, +) diff --git a/mindee/product/fr/payslip/__init__.py b/mindee/product/fr/payslip/__init__.py index 4a193d78..a3c6aecd 100644 --- a/mindee/product/fr/payslip/__init__.py +++ b/mindee/product/fr/payslip/__init__.py @@ -1,24 +1,28 @@ -from mindee.product.fr.payslip.payslip_v2 import PayslipV2 -from mindee.product.fr.payslip.payslip_v2_bank_account_detail import ( - PayslipV2BankAccountDetail, -) -from mindee.product.fr.payslip.payslip_v2_document import PayslipV2Document -from mindee.product.fr.payslip.payslip_v2_employee import PayslipV2Employee -from mindee.product.fr.payslip.payslip_v2_employer import PayslipV2Employer -from mindee.product.fr.payslip.payslip_v2_employment import PayslipV2Employment -from mindee.product.fr.payslip.payslip_v2_pay_detail import PayslipV2PayDetail -from mindee.product.fr.payslip.payslip_v2_pay_period import PayslipV2PayPeriod -from mindee.product.fr.payslip.payslip_v2_pto import PayslipV2Pto -from mindee.product.fr.payslip.payslip_v2_salary_detail import PayslipV2SalaryDetail from mindee.product.fr.payslip.payslip_v3 import PayslipV3 from mindee.product.fr.payslip.payslip_v3_bank_account_detail import ( PayslipV3BankAccountDetail, ) -from mindee.product.fr.payslip.payslip_v3_document import PayslipV3Document -from mindee.product.fr.payslip.payslip_v3_employee import PayslipV3Employee -from mindee.product.fr.payslip.payslip_v3_employer import PayslipV3Employer -from mindee.product.fr.payslip.payslip_v3_employment import PayslipV3Employment -from mindee.product.fr.payslip.payslip_v3_paid_time_off import PayslipV3PaidTimeOff -from mindee.product.fr.payslip.payslip_v3_pay_detail import PayslipV3PayDetail -from mindee.product.fr.payslip.payslip_v3_pay_period import PayslipV3PayPeriod -from mindee.product.fr.payslip.payslip_v3_salary_detail import PayslipV3SalaryDetail +from mindee.product.fr.payslip.payslip_v3_document import ( + PayslipV3Document, +) +from mindee.product.fr.payslip.payslip_v3_employee import ( + PayslipV3Employee, +) +from mindee.product.fr.payslip.payslip_v3_employer import ( + PayslipV3Employer, +) +from mindee.product.fr.payslip.payslip_v3_employment import ( + PayslipV3Employment, +) +from mindee.product.fr.payslip.payslip_v3_paid_time_off import ( + PayslipV3PaidTimeOff, +) +from mindee.product.fr.payslip.payslip_v3_pay_detail import ( + PayslipV3PayDetail, +) +from mindee.product.fr.payslip.payslip_v3_pay_period import ( + PayslipV3PayPeriod, +) +from mindee.product.fr.payslip.payslip_v3_salary_detail import ( + PayslipV3SalaryDetail, +) diff --git a/mindee/product/invoice/__init__.py b/mindee/product/invoice/__init__.py index d5bdbe34..2a9be25d 100644 --- a/mindee/product/invoice/__init__.py +++ b/mindee/product/invoice/__init__.py @@ -1,3 +1,7 @@ from mindee.product.invoice.invoice_v4 import InvoiceV4 -from mindee.product.invoice.invoice_v4_document import InvoiceV4Document -from mindee.product.invoice.invoice_v4_line_item import InvoiceV4LineItem +from mindee.product.invoice.invoice_v4_document import ( + InvoiceV4Document, +) +from mindee.product.invoice.invoice_v4_line_item import ( + InvoiceV4LineItem, +) diff --git a/mindee/product/passport/__init__.py b/mindee/product/passport/__init__.py index d0fc9e09..8beca939 100644 --- a/mindee/product/passport/__init__.py +++ b/mindee/product/passport/__init__.py @@ -1,2 +1,4 @@ from mindee.product.passport.passport_v1 import PassportV1 -from mindee.product.passport.passport_v1_document import PassportV1Document +from mindee.product.passport.passport_v1_document import ( + PassportV1Document, +) diff --git a/mindee/product/receipt/__init__.py b/mindee/product/receipt/__init__.py index c3d83410..ec8c38d3 100644 --- a/mindee/product/receipt/__init__.py +++ b/mindee/product/receipt/__init__.py @@ -1,3 +1,7 @@ from mindee.product.receipt.receipt_v5 import ReceiptV5 -from mindee.product.receipt.receipt_v5_document import ReceiptV5Document -from mindee.product.receipt.receipt_v5_line_item import ReceiptV5LineItem +from mindee.product.receipt.receipt_v5_document import ( + ReceiptV5Document, +) +from mindee.product.receipt.receipt_v5_line_item import ( + ReceiptV5LineItem, +) diff --git a/mindee/product/resume/__init__.py b/mindee/product/resume/__init__.py index e2ccdd1d..253a379a 100644 --- a/mindee/product/resume/__init__.py +++ b/mindee/product/resume/__init__.py @@ -1,8 +1,16 @@ from mindee.product.resume.resume_v1 import ResumeV1 -from mindee.product.resume.resume_v1_certificate import ResumeV1Certificate -from mindee.product.resume.resume_v1_document import ResumeV1Document -from mindee.product.resume.resume_v1_education import ResumeV1Education -from mindee.product.resume.resume_v1_language import ResumeV1Language +from mindee.product.resume.resume_v1_certificate import ( + ResumeV1Certificate, +) +from mindee.product.resume.resume_v1_document import ( + ResumeV1Document, +) +from mindee.product.resume.resume_v1_education import ( + ResumeV1Education, +) +from mindee.product.resume.resume_v1_language import ( + ResumeV1Language, +) from mindee.product.resume.resume_v1_professional_experience import ( ResumeV1ProfessionalExperience, ) diff --git a/mindee/product/us/__init__.py b/mindee/product/us/__init__.py index 5d84f728..ab3c0d82 100644 --- a/mindee/product/us/__init__.py +++ b/mindee/product/us/__init__.py @@ -1,6 +1,10 @@ from mindee.product.us.bank_check.bank_check_v1 import BankCheckV1 -from mindee.product.us.bank_check.bank_check_v1_document import BankCheckV1Document -from mindee.product.us.bank_check.bank_check_v1_page import BankCheckV1Page +from mindee.product.us.bank_check.bank_check_v1_document import ( + BankCheckV1Document, +) +from mindee.product.us.bank_check.bank_check_v1_page import ( + BankCheckV1Page, +) from mindee.product.us.healthcare_card.healthcare_card_v1 import HealthcareCardV1 from mindee.product.us.healthcare_card.healthcare_card_v1_copay import ( HealthcareCardV1Copay, @@ -8,18 +12,20 @@ from mindee.product.us.healthcare_card.healthcare_card_v1_document import ( HealthcareCardV1Document, ) -from mindee.product.us.us_mail.us_mail_v2 import UsMailV2 -from mindee.product.us.us_mail.us_mail_v2_document import UsMailV2Document -from mindee.product.us.us_mail.us_mail_v2_recipient_address import ( - UsMailV2RecipientAddress, -) -from mindee.product.us.us_mail.us_mail_v2_sender_address import UsMailV2SenderAddress from mindee.product.us.us_mail.us_mail_v3 import UsMailV3 -from mindee.product.us.us_mail.us_mail_v3_document import UsMailV3Document +from mindee.product.us.us_mail.us_mail_v3_document import ( + UsMailV3Document, +) from mindee.product.us.us_mail.us_mail_v3_recipient_address import ( UsMailV3RecipientAddress, ) -from mindee.product.us.us_mail.us_mail_v3_sender_address import UsMailV3SenderAddress +from mindee.product.us.us_mail.us_mail_v3_sender_address import ( + UsMailV3SenderAddress, +) from mindee.product.us.w9.w9_v1 import W9V1 -from mindee.product.us.w9.w9_v1_document import W9V1Document -from mindee.product.us.w9.w9_v1_page import W9V1Page +from mindee.product.us.w9.w9_v1_document import ( + W9V1Document, +) +from mindee.product.us.w9.w9_v1_page import ( + W9V1Page, +) diff --git a/mindee/product/us/bank_check/__init__.py b/mindee/product/us/bank_check/__init__.py index 36350284..6341e709 100644 --- a/mindee/product/us/bank_check/__init__.py +++ b/mindee/product/us/bank_check/__init__.py @@ -1,3 +1,7 @@ from mindee.product.us.bank_check.bank_check_v1 import BankCheckV1 -from mindee.product.us.bank_check.bank_check_v1_document import BankCheckV1Document -from mindee.product.us.bank_check.bank_check_v1_page import BankCheckV1Page +from mindee.product.us.bank_check.bank_check_v1_document import ( + BankCheckV1Document, +) +from mindee.product.us.bank_check.bank_check_v1_page import ( + BankCheckV1Page, +) diff --git a/mindee/product/us/us_mail/__init__.py b/mindee/product/us/us_mail/__init__.py index bcb5367a..b5be043b 100644 --- a/mindee/product/us/us_mail/__init__.py +++ b/mindee/product/us/us_mail/__init__.py @@ -1,12 +1,10 @@ -from mindee.product.us.us_mail.us_mail_v2 import UsMailV2 -from mindee.product.us.us_mail.us_mail_v2_document import UsMailV2Document -from mindee.product.us.us_mail.us_mail_v2_recipient_address import ( - UsMailV2RecipientAddress, -) -from mindee.product.us.us_mail.us_mail_v2_sender_address import UsMailV2SenderAddress from mindee.product.us.us_mail.us_mail_v3 import UsMailV3 -from mindee.product.us.us_mail.us_mail_v3_document import UsMailV3Document +from mindee.product.us.us_mail.us_mail_v3_document import ( + UsMailV3Document, +) from mindee.product.us.us_mail.us_mail_v3_recipient_address import ( UsMailV3RecipientAddress, ) -from mindee.product.us.us_mail.us_mail_v3_sender_address import UsMailV3SenderAddress +from mindee.product.us.us_mail.us_mail_v3_sender_address import ( + UsMailV3SenderAddress, +) diff --git a/mindee/product/us/w9/__init__.py b/mindee/product/us/w9/__init__.py index d8cab7c1..1d6d24fb 100644 --- a/mindee/product/us/w9/__init__.py +++ b/mindee/product/us/w9/__init__.py @@ -1,3 +1,7 @@ from mindee.product.us.w9.w9_v1 import W9V1 -from mindee.product.us.w9.w9_v1_document import W9V1Document -from mindee.product.us.w9.w9_v1_page import W9V1Page +from mindee.product.us.w9.w9_v1_document import ( + W9V1Document, +) +from mindee.product.us.w9.w9_v1_page import ( + W9V1Page, +) diff --git a/mindee/tests/product/eu/__init__.py b/mindee/tests/product/eu/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mindee/tests/product/fr/__init__.py b/mindee/tests/product/fr/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mindee/tests/product/ind/__init__.py b/mindee/tests/product/ind/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mindee/tests/product/us/__init__.py b/mindee/tests/product/us/__init__.py new file mode 100644 index 00000000..e69de29b From 970956aaad6143cfba9daae87256327184f0175d Mon Sep 17 00:00:00 2001 From: sebastianMindee <130448732+sebastianMindee@users.noreply.github.com> Date: Fri, 14 Mar 2025 09:44:11 +0100 Subject: [PATCH 4/9] :coffin: deprecate: Receipt V4, US Driver License, EU Driver License (#303) --- mindee/product/eu/__init__.py | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 mindee/product/eu/__init__.py diff --git a/mindee/product/eu/__init__.py b/mindee/product/eu/__init__.py deleted file mode 100644 index f86d3f6d..00000000 --- a/mindee/product/eu/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from mindee.product.eu.license_plate.license_plate_v1 import LicensePlateV1 -from mindee.product.eu.license_plate.license_plate_v1_document import ( - LicensePlateV1Document, -) From badcf531efa041bbf168c24a0b0988ff13a8d2c5 Mon Sep 17 00:00:00 2001 From: sebastianMindee Date: Thu, 13 Mar 2025 18:13:26 +0100 Subject: [PATCH 5/9] :coffin: remove support for US Driver License & EU Driver License --- mindee/commands/cli_products.py | 6 ------ mindee/product/__init__.py | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/mindee/commands/cli_products.py b/mindee/commands/cli_products.py index 116b3a07..a6754fe6 100644 --- a/mindee/commands/cli_products.py +++ b/mindee/commands/cli_products.py @@ -64,12 +64,6 @@ class CommandConfig(Generic[TypeInference]): is_sync=False, is_async=True, ), - "eu-license-plate": CommandConfig( - help="License Plate", - doc_class=product.eu.LicensePlateV1, - is_sync=True, - is_async=False, - ), "financial-document": CommandConfig( help="Financial Document", doc_class=product.FinancialDocumentV1, diff --git a/mindee/product/__init__.py b/mindee/product/__init__.py index 564938af..f49443dd 100644 --- a/mindee/product/__init__.py +++ b/mindee/product/__init__.py @@ -1,4 +1,4 @@ -from mindee.product import eu, fr, ind, us +from mindee.product import fr, ind, us from mindee.product.barcode_reader.barcode_reader_v1 import BarcodeReaderV1 from mindee.product.barcode_reader.barcode_reader_v1_document import ( BarcodeReaderV1Document, From 4d73e9f9aaad942e996f8b1f9ad8e9bba0cb3957 Mon Sep 17 00:00:00 2001 From: sebastianMindee Date: Fri, 14 Mar 2025 10:01:11 +0100 Subject: [PATCH 6/9] :coffin: fully deprecate petrol receipts --- README.md | 3 - .../code_samples/petrol_receipts_v1.txt | 18 ----- mindee/product/fr/petrol_receipt/__init__.py | 0 .../fr/petrol_receipt/petrol_receipt_v1.py | 34 --------- .../petrol_receipt_v1_document.py | 55 -------------- .../petrol_receipt/petrol_receipt_v1_fuel.py | 56 -------------- .../petrol_receipt/petrol_receipt_v1_total.py | 54 ------------- tests/product/fr/petrol_receipt/__init__.py | 0 .../petrol_receipt/test_petrol_receipt_v1.py | 76 ------------------- .../test_petrol_receipt_v1_regression.py | 24 ------ 10 files changed, 320 deletions(-) delete mode 100644 docs/extras/code_samples/petrol_receipts_v1.txt delete mode 100644 mindee/product/fr/petrol_receipt/__init__.py delete mode 100644 mindee/product/fr/petrol_receipt/petrol_receipt_v1.py delete mode 100644 mindee/product/fr/petrol_receipt/petrol_receipt_v1_document.py delete mode 100644 mindee/product/fr/petrol_receipt/petrol_receipt_v1_fuel.py delete mode 100644 mindee/product/fr/petrol_receipt/petrol_receipt_v1_total.py delete mode 100644 tests/product/fr/petrol_receipt/__init__.py delete mode 100644 tests/product/fr/petrol_receipt/test_petrol_receipt_v1.py delete mode 100644 tests/product/fr/petrol_receipt/test_petrol_receipt_v1_regression.py diff --git a/README.md b/README.md index bb76c13a..caa55635 100644 --- a/README.md +++ b/README.md @@ -194,16 +194,13 @@ Complete details on the working of the library are available in the following gu * [Python Financial Document OCR](https://developers.mindee.com/docs/python-financial-document-ocr) * [Python Passport OCR](https://developers.mindee.com/docs/python-passport-ocr) * [Python Proof of Address OCR](https://developers.mindee.com/docs/python-proof-of-address-ocr) -* [Python EU License Plate OCR](https://developers.mindee.com/docs/python-eu-license-plate-ocr) * [Python US Driver License OCR](https://developers.mindee.com/docs/python-eu-driver-license-ocr) * [Python FR Bank Account Detail OCR](https://developers.mindee.com/docs/python-fr-bank-account-details-ocr) * [Python FR Carte Grise OCR](https://developers.mindee.com/docs/python-fr-carte-grise-ocr) * [Python FR Health Card OCR](https://developers.mindee.com/docs/python-fr-health-card-ocr) * [Python FR ID Card OCR](https://developers.mindee.com/docs/python-fr-carte-nationale-didentite-ocr) -* [Python FR Petrol Receipts OCR](https://developers.mindee.com/docs/python-fr-petrol-receipts-ocr) * [Python US Bank Check OCR](https://developers.mindee.com/docs/python-us-bank-check-ocr) * [Python US W9 OCR](https://developers.mindee.com/docs/python-us-w9-ocr) -* [Python US Driver License OCR](https://developers.mindee.com/docs/python-us-driver-license-ocr) * [Python Barcode Reader API](https://developers.mindee.com/docs/python-barcode-reader-ocr) * [Python Cropper API](https://developers.mindee.com/docs/python-cropper-ocr) * [Python Invoice Splitter API](https://developers.mindee.com/docs/python-invoice-splitter-api) diff --git a/docs/extras/code_samples/petrol_receipts_v1.txt b/docs/extras/code_samples/petrol_receipts_v1.txt deleted file mode 100644 index a31cf877..00000000 --- a/docs/extras/code_samples/petrol_receipts_v1.txt +++ /dev/null @@ -1,18 +0,0 @@ -from mindee import Client, PredictResponse, product - -# Init a new client -mindee_client = Client(api_key="my-api-key") - -# Load a file from disk -input_doc = mindee_client.source_from_path("/path/to/the/file.ext") - -# Load a file from disk and parse it. -# The endpoint name must be specified since it cannot be determined from the class. -result: PredictResponse = mindee_client.parse(product.fr.PetrolReceiptV1, input_doc) - -# Print a brief summary of the parsed data -print(result.document) - -# # Iterate over all the fields in the document -# for field_name, field_values in result.document.inference.prediction.fields.items(): -# print(field_name, "=", field_values) diff --git a/mindee/product/fr/petrol_receipt/__init__.py b/mindee/product/fr/petrol_receipt/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/mindee/product/fr/petrol_receipt/petrol_receipt_v1.py b/mindee/product/fr/petrol_receipt/petrol_receipt_v1.py deleted file mode 100644 index 59435fe8..00000000 --- a/mindee/product/fr/petrol_receipt/petrol_receipt_v1.py +++ /dev/null @@ -1,34 +0,0 @@ -from typing import List - -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page -from mindee.parsing.common.string_dict import StringDict -from mindee.product.fr.petrol_receipt.petrol_receipt_v1_document import ( - PetrolReceiptV1Document, -) - - -class PetrolReceiptV1(Inference): - """Inference prediction for Petrol Receipt, API version 1.""" - - prediction: PetrolReceiptV1Document - """Document-level prediction.""" - pages: List[Page[PetrolReceiptV1Document]] - """Page-level prediction(s).""" - endpoint_name = "petrol_receipts" - """Name of the endpoint.""" - endpoint_version = "1" - """Version of the endpoint.""" - - def __init__(self, raw_prediction: StringDict): - """ - Petrol Receipt v1 inference. - - :param raw_prediction: Raw prediction from the HTTP response. - """ - super().__init__(raw_prediction) - - self.prediction = PetrolReceiptV1Document(raw_prediction["prediction"]) - self.pages = [] - for page in raw_prediction["pages"]: - self.pages.append(Page(PetrolReceiptV1Document, page)) diff --git a/mindee/product/fr/petrol_receipt/petrol_receipt_v1_document.py b/mindee/product/fr/petrol_receipt/petrol_receipt_v1_document.py deleted file mode 100644 index ed2138b9..00000000 --- a/mindee/product/fr/petrol_receipt/petrol_receipt_v1_document.py +++ /dev/null @@ -1,55 +0,0 @@ -from typing import Optional - -from mindee.parsing.common.prediction import Prediction -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.amount import AmountField -from mindee.product.fr.petrol_receipt.petrol_receipt_v1_fuel import PetrolReceiptV1Fuel -from mindee.product.fr.petrol_receipt.petrol_receipt_v1_total import ( - PetrolReceiptV1Total, -) - - -class PetrolReceiptV1Document(Prediction): - """Document data for Petrol Receipt, API version 1.""" - - fuel: PetrolReceiptV1Fuel - """The fuel type.""" - price: AmountField - """The price per unit of fuel.""" - total: PetrolReceiptV1Total - """The total amount paid.""" - volume: AmountField - """The volume of fuel purchased.""" - - def __init__(self, raw_prediction: StringDict, page_id: Optional[int] = None): - """ - Petrol Receipt document. - - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input - """ - super().__init__(raw_prediction, page_id) - self.fuel = PetrolReceiptV1Fuel( - raw_prediction["fuel"], - page_id=page_id, - ) - self.price = AmountField( - raw_prediction["price"], - page_id=page_id, - ) - self.total = PetrolReceiptV1Total( - raw_prediction["total"], - page_id=page_id, - ) - self.volume = AmountField( - raw_prediction["volume"], - page_id=page_id, - ) - - def __str__(self) -> str: - out_str: str = f":Fuel Type:\n{self.fuel.to_field_list()}\n" - out_str += f":Price per Unit: {self.price}\n" - out_str += f":Volume: {self.volume}\n" - out_str += f":Total Amount:\n{self.total.to_field_list()}\n" - return clean_out_string(out_str) diff --git a/mindee/product/fr/petrol_receipt/petrol_receipt_v1_fuel.py b/mindee/product/fr/petrol_receipt/petrol_receipt_v1_fuel.py deleted file mode 100644 index e45a3f55..00000000 --- a/mindee/product/fr/petrol_receipt/petrol_receipt_v1_fuel.py +++ /dev/null @@ -1,56 +0,0 @@ -from typing import Dict, Optional - -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.common.summary_helper import clean_out_string, format_for_display -from mindee.parsing.standard.base import FieldConfidenceMixin, FieldPositionMixin - - -class PetrolReceiptV1Fuel(FieldPositionMixin, FieldConfidenceMixin): - """The fuel type.""" - - category: Optional[str] - """The fuel category among a list of 4 possible choices.""" - raw_text: Optional[str] - """As seen on the receipt.""" - page_n: int - """The document page on which the information was found.""" - - def __init__( - self, - raw_prediction: StringDict, - page_id: Optional[int] = None, - ): - self._set_confidence(raw_prediction) - self._set_position(raw_prediction) - - if page_id is None: - try: - self.page_n = raw_prediction["page_id"] - except KeyError: - pass - else: - self.page_n = page_id - - self.category = raw_prediction["category"] - self.raw_text = raw_prediction["raw_text"] - - def _printable_values(self) -> Dict[str, str]: - """Return values for printing.""" - out_dict: Dict[str, str] = {} - out_dict["category"] = format_for_display(self.category, None) - out_dict["raw_text"] = format_for_display(self.raw_text, None) - return out_dict - - def to_field_list(self) -> str: - """Output the object in a format suitable for inclusion in an rST field list.""" - printable = self._printable_values() - out_str: str = f" :Category: {printable['category']}\n" - out_str += f" :Raw Name: {printable['raw_text']}\n" - return out_str.rstrip() - - def __str__(self) -> str: - """Default string representation.""" - printable = self._printable_values() - out_str: str = f"Category: {printable['category']}, \n" - out_str += f"Raw Name: {printable['raw_text']}, \n" - return clean_out_string(out_str) diff --git a/mindee/product/fr/petrol_receipt/petrol_receipt_v1_total.py b/mindee/product/fr/petrol_receipt/petrol_receipt_v1_total.py deleted file mode 100644 index 33a3bb28..00000000 --- a/mindee/product/fr/petrol_receipt/petrol_receipt_v1_total.py +++ /dev/null @@ -1,54 +0,0 @@ -from typing import Dict, Optional - -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.base import ( - FieldConfidenceMixin, - FieldPositionMixin, - float_to_string, - to_opt_float, -) - - -class PetrolReceiptV1Total(FieldPositionMixin, FieldConfidenceMixin): - """The total amount paid.""" - - amount: Optional[float] - """The amount.""" - page_n: int - """The document page on which the information was found.""" - - def __init__( - self, - raw_prediction: StringDict, - page_id: Optional[int] = None, - ): - self._set_confidence(raw_prediction) - self._set_position(raw_prediction) - - if page_id is None: - try: - self.page_n = raw_prediction["page_id"] - except KeyError: - pass - else: - self.page_n = page_id - - self.amount = to_opt_float(raw_prediction, "amount") - - def _printable_values(self) -> Dict[str, str]: - """Return values for printing.""" - out_dict: Dict[str, str] = {"amount": float_to_string(self.amount)} - return out_dict - - def to_field_list(self) -> str: - """Output the object in a format suitable for inclusion in an rST field list.""" - printable = self._printable_values() - out_str: str = f" :Amount Paid: {printable['amount']}\n" - return out_str.rstrip() - - def __str__(self) -> str: - """Default string representation.""" - printable = self._printable_values() - out_str: str = f"Amount Paid: {printable['amount']}, \n" - return clean_out_string(out_str) diff --git a/tests/product/fr/petrol_receipt/__init__.py b/tests/product/fr/petrol_receipt/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/product/fr/petrol_receipt/test_petrol_receipt_v1.py b/tests/product/fr/petrol_receipt/test_petrol_receipt_v1.py deleted file mode 100644 index 8e8e7689..00000000 --- a/tests/product/fr/petrol_receipt/test_petrol_receipt_v1.py +++ /dev/null @@ -1,76 +0,0 @@ -import json - -import pytest - -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.fr import PetrolReceiptV1 -from mindee.product.fr.petrol_receipt.petrol_receipt_v1_document import ( - PetrolReceiptV1Document, -) -from tests.product import PRODUCT_DATA_DIR - - -@pytest.fixture -def complete_doc() -> Document[PetrolReceiptV1Document, Page[PetrolReceiptV1Document]]: - json_data = json.load( - open( - PRODUCT_DATA_DIR / "petrol_receipts" / "response_v1" / "complete.json", - encoding="utf-8", - ) - ) - return Document(PetrolReceiptV1, json_data["document"]) - - -@pytest.fixture -def empty_doc() -> Document[PetrolReceiptV1Document, Page[PetrolReceiptV1Document]]: - json_data = json.load( - open( - PRODUCT_DATA_DIR / "petrol_receipts" / "response_v1" / "empty.json", - encoding="utf-8", - ) - ) - return Document(PetrolReceiptV1, json_data["document"]) - - -@pytest.fixture -def complete_page_0() -> Page[PetrolReceiptV1Document]: - json_data = json.load( - open( - PRODUCT_DATA_DIR / "petrol_receipts" / "response_v1" / "complete.json", - encoding="utf-8", - ) - ) - return Page(PetrolReceiptV1Document, json_data["document"]["inference"]["pages"][0]) - - -def test_complete_doc( - complete_doc: Document[PetrolReceiptV1Document, Page[PetrolReceiptV1Document]] -): - reference_str = open( - PRODUCT_DATA_DIR / "petrol_receipts" / "response_v1" / "summary_full.rst", - "r", - encoding="utf-8", - ).read() - assert str(complete_doc) == reference_str - - -def test_empty_doc( - empty_doc: Document[PetrolReceiptV1Document, Page[PetrolReceiptV1Document]] -): - prediction = empty_doc.inference.prediction - assert prediction.fuel.category is None - assert prediction.fuel.raw_text is None - assert prediction.price.value is None - assert prediction.volume.value is None - assert prediction.total.amount is None - - -def test_complete_page_0(complete_page_0: Page[PetrolReceiptV1Document]): - reference_str = open( - PRODUCT_DATA_DIR / "petrol_receipts" / "response_v1" / "summary_page0.rst", - "r", - encoding="utf-8", - ).read() - assert complete_page_0.id == 0 - assert str(complete_page_0) == reference_str diff --git a/tests/product/fr/petrol_receipt/test_petrol_receipt_v1_regression.py b/tests/product/fr/petrol_receipt/test_petrol_receipt_v1_regression.py deleted file mode 100644 index 1cfdb2b4..00000000 --- a/tests/product/fr/petrol_receipt/test_petrol_receipt_v1_regression.py +++ /dev/null @@ -1,24 +0,0 @@ -import pytest - -from mindee.client import Client -from mindee.product.fr.petrol_receipt.petrol_receipt_v1 import PetrolReceiptV1 -from tests.product import PRODUCT_DATA_DIR, get_id, get_version - - -@pytest.mark.regression -def test_default_sample(): - client = Client() - with open( - PRODUCT_DATA_DIR / "petrol_receipts" / "response_v1" / "default_sample.rst", - encoding="utf-8", - ) as rst_file: - rst_ref = rst_file.read() - - sample = client.source_from_path( - PRODUCT_DATA_DIR / "petrol_receipts" / "default_sample.jpg" - ) - response = client.parse(PetrolReceiptV1, sample) - doc_response = response.document - doc_response.id = get_id(rst_ref) - doc_response.inference.product.version = get_version(rst_ref) - assert str(doc_response) == rst_ref From 5ba22f8647c2044630b4c10a9d2dee1e48127f1b Mon Sep 17 00:00:00 2001 From: sebastianMindee Date: Fri, 14 Mar 2025 10:02:53 +0100 Subject: [PATCH 7/9] remove eu namespace --- mindee/tests/product/eu/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mindee/tests/product/eu/__init__.py diff --git a/mindee/tests/product/eu/__init__.py b/mindee/tests/product/eu/__init__.py deleted file mode 100644 index e69de29b..00000000 From ca963d29f46e6eda6ba6a4f772d5f13ca450df9b Mon Sep 17 00:00:00 2001 From: sebastianMindee Date: Fri, 14 Mar 2025 10:26:29 +0100 Subject: [PATCH 8/9] restore working proof of address --- docs/extras/guide/proof_of_address_v1.md | 208 +++++++++++++++++++++++ docs/product/proof_of_address_v1.rst | 15 ++ mindee/commands/cli_products.py | 6 + mindee/product/__init__.py | 4 + 4 files changed, 233 insertions(+) create mode 100644 docs/extras/guide/proof_of_address_v1.md create mode 100644 docs/product/proof_of_address_v1.rst diff --git a/docs/extras/guide/proof_of_address_v1.md b/docs/extras/guide/proof_of_address_v1.md new file mode 100644 index 00000000..8099d5b2 --- /dev/null +++ b/docs/extras/guide/proof_of_address_v1.md @@ -0,0 +1,208 @@ +--- +title: Proof of Address OCR Python +category: 622b805aaec68102ea7fcbc2 +slug: python-proof-of-address-ocr +parentDoc: 609808f773b0b90051d839de +--- +The Python OCR SDK supports the [Proof of Address API](https://platform.mindee.com/mindee/proof_of_address). + +Using the [sample below](https://github.com/mindee/client-lib-test-data/blob/main/products/proof_of_address/default_sample.jpg), we are going to illustrate how to extract the data that we want using the OCR SDK. +![Proof of Address sample](https://github.com/mindee/client-lib-test-data/blob/main/products/proof_of_address/default_sample.jpg?raw=true) + +# Quick-Start +```py +from mindee import Client, PredictResponse, product + +# Init a new client +mindee_client = Client(api_key="my-api-key") + +# Load a file from disk +input_doc = mindee_client.source_from_path("/path/to/the/file.ext") + +# Load a file from disk and parse it. +# The endpoint name must be specified since it cannot be determined from the class. +result: PredictResponse = mindee_client.parse(product.ProofOfAddressV1, input_doc) + +# Print a summary of the API result +print(result.document) + +# Print the document-level summary +# print(result.document.inference.prediction) + +``` + +**Output (RST):** +```rst +######## +Document +######## +:Mindee ID: 5d2361e9-405e-4fc1-8531-f92a3aef0c38 +:Filename: default_sample.jpg + +Inference +######### +:Product: mindee/proof_of_address v1.1 +:Rotation applied: Yes + +Prediction +========== +:Locale: en; en; USD; +:Issuer Name: PPL ELECTRIC UTILITIES +:Issuer Company Registrations: +:Issuer Address: 2 NORTH 9TH STREET CPC-GENN1 ALLENTOWN.PA 18101-1175 +:Recipient Name: +:Recipient Company Registrations: +:Recipient Address: 123 MAIN ST ANYTOWN,PA 18062 +:Dates: 2011-07-27 + 2011-07-06 + 2011-08-03 + 2011-07-27 + 2011-06-01 + 2011-07-01 + 2010-07-01 + 2010-08-01 + 2011-07-01 + 2009-08-01 + 2010-07-01 + 2011-07-27 +:Date of Issue: 2011-07-27 + +Page Predictions +================ + +Page 0 +------ +:Locale: en; en; USD; +:Issuer Name: PPL ELECTRIC UTILITIES +:Issuer Company Registrations: +:Issuer Address: 2 NORTH 9TH STREET CPC-GENN1 ALLENTOWN.PA 18101-1175 +:Recipient Name: +:Recipient Company Registrations: +:Recipient Address: 123 MAIN ST ANYTOWN,PA 18062 +:Dates: 2011-07-27 + 2011-07-06 + 2011-08-03 + 2011-07-27 + 2011-06-01 + 2011-07-01 + 2010-07-01 + 2010-08-01 + 2011-07-01 + 2009-08-01 + 2010-07-01 + 2011-07-27 +:Date of Issue: 2011-07-27 +``` + +# Field Types +## Standard Fields +These fields are generic and used in several products. + +### BaseField +Each prediction object contains a set of fields that inherit from the generic `BaseField` class. +A typical `BaseField` object will have the following attributes: + +* **value** (`Union[float, str]`): corresponds to the field value. Can be `None` if no value was extracted. +* **confidence** (`float`): the confidence score of the field prediction. +* **bounding_box** (`[Point, Point, Point, Point]`): contains exactly 4 relative vertices (points) coordinates of a right rectangle containing the field in the document. +* **polygon** (`List[Point]`): contains the relative vertices coordinates (`Point`) of a polygon containing the field in the image. +* **page_id** (`int`): the ID of the page, always `None` when at document-level. +* **reconstructed** (`bool`): indicates whether an object was reconstructed (not extracted as the API gave it). + +> **Note:** A `Point` simply refers to a List of two numbers (`[float, float]`). + + +Aside from the previous attributes, all basic fields have access to a custom `__str__` method that can be used to print their value as a string. + + +### CompanyRegistrationField +Aside from the basic `BaseField` attributes, the company registration field `CompanyRegistrationField` also implements the following: + +* **type** (`str`): the type of company. + +### DateField +Aside from the basic `BaseField` attributes, the date field `DateField` also implements the following: + +* **date_object** (`Date`): an accessible representation of the value as a python object. Can be `None`. + +### LocaleField +The locale field `LocaleField` only implements the **value**, **confidence** and **page_id** base `BaseField` attributes, but it comes with its own: + +* **language** (`str`): ISO 639-1 language code (e.g.: `en` for English). Can be `None`. +* **country** (`str`): ISO 3166-1 alpha-2 or ISO 3166-1 alpha-3 code for countries (e.g.: `GRB` or `GB` for "Great Britain"). Can be `None`. +* **currency** (`str`): ISO 4217 code for currencies (e.g.: `USD` for "US Dollars"). Can be `None`. + +### StringField +The text field `StringField` only has one constraint: its **value** is an `Optional[str]`. + +# Attributes +The following fields are extracted for Proof of Address V1: + +## Date of Issue +**date** ([DateField](#datefield)): The date the document was issued. + +```py +print(result.document.inference.prediction.date.value) +``` + +## Dates +**dates** (List[[DateField](#datefield)]): List of dates found on the document. + +```py +for dates_elem in result.document.inference.prediction.dates: + print(dates_elem.value) +``` + +## Issuer Address +**issuer_address** ([StringField](#stringfield)): The address of the document's issuer. + +```py +print(result.document.inference.prediction.issuer_address.value) +``` + +## Issuer Company Registrations +**issuer_company_registration** (List[[CompanyRegistrationField](#companyregistrationfield)]): List of company registrations found for the issuer. + +```py +for issuer_company_registration_elem in result.document.inference.prediction.issuer_company_registration: + print(issuer_company_registration_elem.value) +``` + +## Issuer Name +**issuer_name** ([StringField](#stringfield)): The name of the person or company issuing the document. + +```py +print(result.document.inference.prediction.issuer_name.value) +``` + +## Locale +**locale** ([LocaleField](#localefield)): The locale detected on the document. + +```py +print(result.document.inference.prediction.locale.value) +``` + +## Recipient Address +**recipient_address** ([StringField](#stringfield)): The address of the recipient. + +```py +print(result.document.inference.prediction.recipient_address.value) +``` + +## Recipient Company Registrations +**recipient_company_registration** (List[[CompanyRegistrationField](#companyregistrationfield)]): List of company registrations found for the recipient. + +```py +for recipient_company_registration_elem in result.document.inference.prediction.recipient_company_registration: + print(recipient_company_registration_elem.value) +``` + +## Recipient Name +**recipient_name** ([StringField](#stringfield)): The name of the person or company receiving the document. + +```py +print(result.document.inference.prediction.recipient_name.value) +``` + +# Questions? +[Join our Slack](https://join.slack.com/t/mindee-community/shared_invite/zt-2d0ds7dtz-DPAF81ZqTy20chsYpQBW5g) diff --git a/docs/product/proof_of_address_v1.rst b/docs/product/proof_of_address_v1.rst new file mode 100644 index 00000000..4260ff40 --- /dev/null +++ b/docs/product/proof_of_address_v1.rst @@ -0,0 +1,15 @@ +Proof of Address V1 +------------------- + +**Sample Code:** + +.. literalinclude:: /extras/code_samples/proof_of_address_v1.txt + :language: Python + +.. autoclass:: mindee.product.proof_of_address.proof_of_address_v1.ProofOfAddressV1 + :members: + :inherited-members: + +.. autoclass:: mindee.product.proof_of_address.proof_of_address_v1_document.ProofOfAddressV1Document + :members: + :inherited-members: diff --git a/mindee/commands/cli_products.py b/mindee/commands/cli_products.py index a6754fe6..900aedc6 100644 --- a/mindee/commands/cli_products.py +++ b/mindee/commands/cli_products.py @@ -154,6 +154,12 @@ class CommandConfig(Generic[TypeInference]): is_sync=True, is_async=False, ), + "proof-of-address": CommandConfig( + help="Proof of Address", + doc_class=product.ProofOfAddressV1, + is_sync=True, + is_async=False, + ), "receipt": CommandConfig( help="Receipt", doc_class=product.ReceiptV5, diff --git a/mindee/product/__init__.py b/mindee/product/__init__.py index f49443dd..6d540745 100644 --- a/mindee/product/__init__.py +++ b/mindee/product/__init__.py @@ -129,6 +129,10 @@ from mindee.product.passport.passport_v1_document import ( PassportV1Document, ) +from mindee.product.proof_of_address.proof_of_address_v1 import ProofOfAddressV1 +from mindee.product.proof_of_address.proof_of_address_v1_document import ( + ProofOfAddressV1Document, +) from mindee.product.receipt.receipt_v5 import ReceiptV5 from mindee.product.receipt.receipt_v5_document import ( ReceiptV5Document, From 998617bb919852e7fd2f0e2efa0cdadbb89aad3b Mon Sep 17 00:00:00 2001 From: sebastianMindee Date: Fri, 14 Mar 2025 15:33:55 +0100 Subject: [PATCH 9/9] restore usmail v2 --- mindee/product/us/__init__.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/mindee/product/us/__init__.py b/mindee/product/us/__init__.py index ab3c0d82..09725bbc 100644 --- a/mindee/product/us/__init__.py +++ b/mindee/product/us/__init__.py @@ -12,6 +12,16 @@ from mindee.product.us.healthcare_card.healthcare_card_v1_document import ( HealthcareCardV1Document, ) +from mindee.product.us.us_mail.us_mail_v2 import UsMailV2 +from mindee.product.us.us_mail.us_mail_v2_document import ( + UsMailV2Document, +) +from mindee.product.us.us_mail.us_mail_v2_recipient_address import ( + UsMailV2RecipientAddress, +) +from mindee.product.us.us_mail.us_mail_v2_sender_address import ( + UsMailV2SenderAddress, +) from mindee.product.us.us_mail.us_mail_v3 import UsMailV3 from mindee.product.us.us_mail.us_mail_v3_document import ( UsMailV3Document,