mindee 3.19.1 → 4.0.0
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -1
- data/CHANGELOG.md +28 -0
- data/README.md +42 -52
- data/Steepfile +31 -0
- data/bin/mindee.rb +30 -62
- data/docs/advanced_file_operations.md +111 -0
- data/docs/code_samples/bank_account_details_v1.txt +5 -0
- data/docs/code_samples/bank_account_details_v2.txt +5 -0
- data/docs/code_samples/bank_check_v1.txt +5 -0
- data/docs/code_samples/{us_driver_license_v1.txt → bank_statement_fr_v2_async.txt} +6 -1
- data/docs/code_samples/barcode_reader_v1.txt +5 -0
- data/docs/code_samples/bill_of_lading_v1_async.txt +6 -1
- data/docs/code_samples/business_card_v1_async.txt +6 -1
- data/docs/code_samples/carte_grise_v1.txt +5 -0
- data/docs/code_samples/cropper_v1.txt +5 -0
- data/docs/code_samples/default.txt +8 -2
- data/docs/code_samples/default_async.txt +7 -2
- data/docs/code_samples/delivery_notes_v1_async.txt +6 -1
- data/docs/code_samples/driver_license_v1_async.txt +6 -1
- data/docs/code_samples/energy_bill_fra_v1_async.txt +6 -1
- data/docs/code_samples/expense_receipts_v5.txt +7 -1
- data/docs/code_samples/expense_receipts_v5_async.txt +6 -1
- data/docs/code_samples/financial_document_v1.txt +7 -1
- data/docs/code_samples/financial_document_v1_async.txt +6 -1
- data/docs/code_samples/french_healthcard_v1_async.txt +6 -1
- data/docs/code_samples/idcard_fr_v1.txt +5 -0
- data/docs/code_samples/idcard_fr_v2.txt +5 -0
- data/docs/code_samples/ind_passport_v1_async.txt +6 -1
- data/docs/code_samples/international_id_v2_async.txt +6 -1
- data/docs/code_samples/invoice_splitter_v1_async.txt +6 -1
- data/docs/code_samples/invoices_v4.txt +7 -1
- data/docs/code_samples/invoices_v4_async.txt +6 -1
- data/docs/code_samples/license_plates_v1.txt +5 -0
- data/docs/code_samples/multi_receipts_detector_v1.txt +5 -0
- data/docs/code_samples/nutrition_facts_v1_async.txt +6 -1
- data/docs/code_samples/passport_v1.txt +5 -0
- data/docs/code_samples/payslip_fra_v2_async.txt +6 -1
- data/docs/code_samples/payslip_fra_v3_async.txt +6 -1
- data/docs/code_samples/resume_v1_async.txt +6 -1
- data/docs/code_samples/us_healthcare_cards_v1_async.txt +6 -1
- data/docs/code_samples/us_mail_v3_async.txt +6 -1
- data/docs/code_samples/us_w9_v1.txt +5 -0
- data/docs/getting_started.md +50 -118
- data/docs/{barcode_reader_v1.md → global_products/barcode_reader_v1.md} +26 -9
- data/docs/{bill_of_lading_v1.md → global_products/bill_of_lading_v1.md} +62 -37
- data/docs/{business_card_v1.md → global_products/business_card_v1.md} +35 -10
- data/docs/{cropper_v1.md → global_products/cropper_v1.md} +32 -13
- data/docs/{delivery_notes_v1.md → global_products/delivery_notes_v1.md} +35 -10
- data/docs/{driver_license_v1.md → global_products/driver_license_v1.md} +65 -9
- data/docs/{expense_receipts_v5.md → global_products/expense_receipts_v5.md} +57 -21
- data/docs/{financial_document_v1.md → global_products/financial_document_v1.md} +70 -33
- data/docs/{international_id_v2.md → global_products/international_id_v2.md} +39 -13
- data/docs/{invoice_splitter_v1.md → global_products/invoice_splitter_v1.md} +25 -6
- data/docs/{invoices_v4.md → global_products/invoices_v4.md} +70 -33
- data/docs/{multi_receipts_detector_v1.md → global_products/multi_receipts_detector_v1.md} +32 -13
- data/docs/{nutrition_facts_v1.md → global_products/nutrition_facts_v1.md} +103 -78
- data/docs/{passport_v1.md → global_products/passport_v1.md} +26 -9
- data/docs/{resume_v1.md → global_products/resume_v1.md} +72 -46
- data/docs/{generated_v1.md → global_products/universal.md} +39 -19
- data/docs/global_products.md +6 -0
- data/docs/loading_a_document.md +316 -0
- data/docs/{bank_account_details_v2.md → localized_products/bank_account_details_v2.md} +24 -7
- data/docs/{bank_check_v1.md → localized_products/bank_check_v1.md} +37 -18
- data/docs/localized_products/bank_statement_fr_v2.md +269 -0
- data/docs/{carte_grise_v1.md → localized_products/carte_grise_v1.md} +25 -8
- data/docs/{energy_bill_fra_v1.md → localized_products/energy_bill_fra_v1.md} +70 -45
- data/docs/{french_healthcard_v1.md → localized_products/french_healthcard_v1.md} +36 -11
- data/docs/{idcard_fr_v2.md → localized_products/idcard_fr_v2.md} +34 -16
- data/docs/{ind_passport_v1.md → localized_products/ind_passport_v1.md} +37 -11
- data/docs/{license_plates_v1.md → localized_products/license_plates_v1.md} +25 -8
- data/docs/{payslip_fra_v3.md → localized_products/payslip_fra_v3.md} +80 -55
- data/docs/{us_healthcare_cards_v1.md → localized_products/us_healthcare_cards_v1.md} +37 -12
- data/docs/{us_mail_v3.md → localized_products/us_mail_v3.md} +49 -24
- data/docs/{us_w9_v1.md → localized_products/us_w9_v1.md} +64 -45
- data/docs/localized_products.md +6 -0
- data/examples/auto_invoice_splitter_extraction.rb +5 -5
- data/examples/auto_multi_receipts_detector_extraction.rb +4 -5
- data/lib/mindee/client.rb +354 -209
- data/lib/mindee/errors/mindee_error.rb +17 -0
- data/lib/mindee/errors/mindee_http_error.rb +36 -0
- data/lib/mindee/errors/mindee_input_error.rb +30 -0
- data/lib/mindee/errors.rb +5 -0
- data/lib/mindee/extraction/multi_receipts_extractor.rb +28 -1
- data/lib/mindee/extraction.rb +0 -3
- data/lib/mindee/geometry/polygon.rb +1 -1
- data/lib/mindee/geometry/utils.rb +1 -1
- data/lib/mindee/http/endpoint.rb +48 -40
- data/lib/mindee/http/{error.rb → http_error_handler.rb} +5 -35
- data/lib/mindee/http/response_validation.rb +2 -2
- data/lib/mindee/http/workflow_endpoint.rb +12 -12
- data/lib/mindee/http.rb +1 -1
- data/lib/mindee/{extraction/common → image}/extracted_image.rb +22 -18
- data/lib/mindee/{extraction/common → image}/image_extractor.rb +20 -78
- data/lib/mindee/image/image_utils.rb +68 -7
- data/lib/mindee/image.rb +2 -0
- data/lib/mindee/input/local_response.rb +8 -8
- data/lib/mindee/input/sources/base64_input_source.rb +6 -6
- data/lib/mindee/input/sources/bytes_input_source.rb +3 -3
- data/lib/mindee/input/sources/file_input_source.rb +3 -3
- data/lib/mindee/input/sources/local_input_source.rb +43 -41
- data/lib/mindee/input/sources/path_input_source.rb +3 -3
- data/lib/mindee/input/sources/url_input_source.rb +11 -8
- data/lib/mindee/logging/logger.rb +16 -0
- data/lib/mindee/logging.rb +3 -0
- data/lib/mindee/parsing/common/api_request.rb +36 -0
- data/lib/mindee/parsing/common/api_response.rb +6 -96
- data/lib/mindee/parsing/common/document.rb +12 -8
- data/lib/mindee/parsing/common/execution.rb +4 -2
- data/lib/mindee/parsing/common/execution_priority.rb +6 -0
- data/lib/mindee/parsing/common/extras/cropper_extra.rb +2 -1
- data/lib/mindee/parsing/common/extras/extras.rb +9 -4
- data/lib/mindee/parsing/common/extras/full_text_ocr_extra.rb +1 -0
- data/lib/mindee/parsing/common/inference.rb +23 -4
- data/lib/mindee/parsing/common/job.rb +46 -0
- data/lib/mindee/parsing/common/ocr/mvision_v1.rb +6 -6
- data/lib/mindee/parsing/common/ocr/ocr.rb +29 -29
- data/lib/mindee/parsing/common/page.rb +5 -3
- data/lib/mindee/parsing/common/prediction.rb +2 -0
- data/lib/mindee/parsing/common/workflow_response.rb +28 -0
- data/lib/mindee/parsing/common.rb +3 -0
- data/lib/mindee/parsing/standard/abstract_field.rb +72 -0
- data/lib/mindee/parsing/standard/amount_field.rb +2 -2
- data/lib/mindee/parsing/standard/base_field.rb +5 -84
- data/lib/mindee/parsing/standard/boolean_field.rb +4 -3
- data/lib/mindee/parsing/standard/classification_field.rb +1 -1
- data/lib/mindee/parsing/standard/company_registration_field.rb +7 -2
- data/lib/mindee/parsing/standard/date_field.rb +2 -2
- data/lib/mindee/parsing/standard/feature_field.rb +24 -0
- data/lib/mindee/parsing/standard/payment_details_field.rb +2 -2
- data/lib/mindee/parsing/standard/position_field.rb +3 -1
- data/lib/mindee/parsing/standard/string_field.rb +1 -1
- data/lib/mindee/parsing/standard/tax_field.rb +1 -1
- data/lib/mindee/parsing/standard.rb +1 -0
- data/lib/mindee/parsing/{generated/generated_list_field.rb → universal/universal_list_field.rb} +12 -12
- data/lib/mindee/parsing/{generated/generated_object_field.rb → universal/universal_object_field.rb} +23 -14
- data/lib/mindee/parsing/universal.rb +4 -0
- data/lib/mindee/parsing.rb +1 -2
- data/lib/mindee/{extraction/pdf_extractor → pdf}/extracted_pdf.rb +15 -12
- data/lib/mindee/pdf/pdf_compressor.rb +12 -10
- data/lib/mindee/{extraction/pdf_extractor → pdf}/pdf_extractor.rb +20 -17
- data/lib/mindee/pdf/pdf_processor.rb +12 -22
- data/lib/mindee/pdf/pdf_tools.rb +52 -6
- data/lib/mindee/pdf.rb +2 -0
- data/lib/mindee/product/.rubocop.yml +3 -0
- data/lib/mindee/product/barcode_reader/barcode_reader_v1.rb +9 -3
- data/lib/mindee/product/barcode_reader/barcode_reader_v1_document.rb +5 -5
- data/lib/mindee/product/barcode_reader/barcode_reader_v1_page.rb +9 -5
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1.rb +9 -3
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1_carrier.rb +1 -1
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1_carrier_item.rb +13 -7
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1_carrier_items.rb +62 -0
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1_consignee.rb +1 -1
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1_document.rb +44 -17
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1_notify_party.rb +1 -1
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1_page.rb +9 -5
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1_shipper.rb +1 -1
- data/lib/mindee/product/business_card/business_card_v1.rb +9 -3
- data/lib/mindee/product/business_card/business_card_v1_document.rb +40 -13
- data/lib/mindee/product/business_card/business_card_v1_page.rb +9 -5
- data/lib/mindee/product/cropper/cropper_v1.rb +10 -4
- data/lib/mindee/product/cropper/cropper_v1_page.rb +11 -7
- data/lib/mindee/product/delivery_note/delivery_note_v1.rb +9 -3
- data/lib/mindee/product/delivery_note/delivery_note_v1_document.rb +29 -8
- data/lib/mindee/product/delivery_note/delivery_note_v1_page.rb +9 -5
- data/lib/mindee/product/driver_license/driver_license_v1.rb +9 -3
- data/lib/mindee/product/driver_license/driver_license_v1_document.rb +44 -14
- data/lib/mindee/product/driver_license/driver_license_v1_page.rb +9 -5
- data/lib/mindee/product/eu/license_plate/license_plate_v1.rb +9 -3
- data/lib/mindee/product/eu/license_plate/license_plate_v1_document.rb +3 -3
- data/lib/mindee/product/eu/license_plate/license_plate_v1_page.rb +9 -5
- data/lib/mindee/product/financial_document/financial_document_v1.rb +9 -3
- data/lib/mindee/product/financial_document/financial_document_v1_document.rb +110 -42
- data/lib/mindee/product/financial_document/financial_document_v1_line_item.rb +21 -11
- data/lib/mindee/product/financial_document/financial_document_v1_line_items.rb +62 -0
- data/lib/mindee/product/financial_document/financial_document_v1_page.rb +9 -5
- data/lib/mindee/product/fr/bank_account_details/bank_account_details_v1.rb +9 -3
- data/lib/mindee/product/fr/bank_account_details/bank_account_details_v1_document.rb +7 -4
- data/lib/mindee/product/fr/bank_account_details/bank_account_details_v1_page.rb +9 -5
- data/lib/mindee/product/fr/bank_account_details/bank_account_details_v2.rb +9 -3
- data/lib/mindee/product/fr/bank_account_details/bank_account_details_v2_bban.rb +1 -1
- data/lib/mindee/product/fr/bank_account_details/bank_account_details_v2_document.rb +11 -5
- data/lib/mindee/product/fr/bank_account_details/bank_account_details_v2_page.rb +9 -5
- data/lib/mindee/product/fr/bank_statement/bank_statement_v2.rb +47 -0
- data/lib/mindee/product/fr/bank_statement/{bank_statement_v1_document.rb → bank_statement_v2_document.rb} +62 -26
- data/lib/mindee/product/fr/bank_statement/bank_statement_v2_page.rb +38 -0
- data/lib/mindee/product/fr/bank_statement/{bank_statement_v1_transaction.rb → bank_statement_v2_transaction.rb} +17 -6
- data/lib/mindee/product/fr/bank_statement/bank_statement_v2_transactions.rb +54 -0
- data/lib/mindee/product/fr/carte_grise/carte_grise_v1.rb +9 -3
- data/lib/mindee/product/fr/carte_grise/carte_grise_v1_document.rb +51 -42
- data/lib/mindee/product/fr/carte_grise/carte_grise_v1_page.rb +9 -5
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1.rb +9 -3
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_document.rb +56 -30
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_energy_consumer.rb +1 -1
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_energy_supplier.rb +1 -1
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_energy_usage.rb +13 -7
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_energy_usages.rb +65 -0
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_meter_detail.rb +1 -1
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_page.rb +9 -5
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_subscription.rb +13 -7
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_subscriptions.rb +65 -0
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_taxes_and_contribution.rb +13 -7
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_taxes_and_contributions.rb +65 -0
- data/lib/mindee/product/fr/health_card/health_card_v1.rb +9 -3
- data/lib/mindee/product/fr/health_card/health_card_v1_document.rb +15 -6
- data/lib/mindee/product/fr/health_card/health_card_v1_page.rb +9 -5
- data/lib/mindee/product/fr/id_card/id_card_v1.rb +9 -3
- data/lib/mindee/product/fr/id_card/id_card_v1_document.rb +33 -12
- data/lib/mindee/product/fr/id_card/id_card_v1_page.rb +14 -7
- data/lib/mindee/product/fr/id_card/id_card_v2.rb +9 -3
- data/lib/mindee/product/fr/id_card/id_card_v2_document.rb +50 -17
- data/lib/mindee/product/fr/id_card/id_card_v2_page.rb +18 -8
- data/lib/mindee/product/fr/payslip/payslip_v2.rb +9 -3
- data/lib/mindee/product/fr/payslip/payslip_v2_bank_account_detail.rb +1 -1
- data/lib/mindee/product/fr/payslip/payslip_v2_document.rb +29 -14
- data/lib/mindee/product/fr/payslip/payslip_v2_employee.rb +1 -1
- data/lib/mindee/product/fr/payslip/payslip_v2_employer.rb +1 -1
- data/lib/mindee/product/fr/payslip/payslip_v2_employment.rb +3 -2
- data/lib/mindee/product/fr/payslip/payslip_v2_page.rb +9 -5
- data/lib/mindee/product/fr/payslip/payslip_v2_pay_detail.rb +33 -11
- data/lib/mindee/product/fr/payslip/payslip_v2_pay_period.rb +1 -1
- data/lib/mindee/product/fr/payslip/payslip_v2_pto.rb +13 -4
- data/lib/mindee/product/fr/payslip/payslip_v2_salary_detail.rb +13 -7
- data/lib/mindee/product/fr/payslip/payslip_v2_salary_details.rb +63 -0
- data/lib/mindee/product/fr/payslip/payslip_v3.rb +9 -3
- data/lib/mindee/product/fr/payslip/payslip_v3_bank_account_detail.rb +1 -1
- data/lib/mindee/product/fr/payslip/payslip_v3_document.rb +31 -19
- data/lib/mindee/product/fr/payslip/payslip_v3_employee.rb +1 -1
- data/lib/mindee/product/fr/payslip/payslip_v3_employer.rb +1 -1
- data/lib/mindee/product/fr/payslip/payslip_v3_employment.rb +1 -1
- data/lib/mindee/product/fr/payslip/payslip_v3_page.rb +9 -5
- data/lib/mindee/product/fr/payslip/payslip_v3_paid_time_off.rb +13 -7
- data/lib/mindee/product/fr/payslip/payslip_v3_paid_time_offs.rb +65 -0
- data/lib/mindee/product/fr/payslip/payslip_v3_pay_detail.rb +33 -11
- data/lib/mindee/product/fr/payslip/payslip_v3_pay_period.rb +1 -1
- data/lib/mindee/product/fr/payslip/payslip_v3_salary_detail.rb +17 -9
- data/lib/mindee/product/fr/payslip/payslip_v3_salary_details.rb +65 -0
- data/lib/mindee/product/ind/indian_passport/indian_passport_v1.rb +9 -3
- data/lib/mindee/product/ind/indian_passport/indian_passport_v1_document.rb +87 -24
- data/lib/mindee/product/ind/indian_passport/indian_passport_v1_page.rb +9 -5
- data/lib/mindee/product/international_id/international_id_v2.rb +9 -3
- data/lib/mindee/product/international_id/international_id_v2_document.rb +62 -20
- data/lib/mindee/product/international_id/international_id_v2_page.rb +9 -5
- data/lib/mindee/product/invoice/invoice_v4.rb +9 -3
- data/lib/mindee/product/invoice/invoice_v4_document.rb +90 -36
- data/lib/mindee/product/invoice/invoice_v4_line_item.rb +21 -11
- data/lib/mindee/product/invoice/invoice_v4_line_items.rb +62 -0
- data/lib/mindee/product/invoice/invoice_v4_page.rb +9 -5
- data/lib/mindee/product/invoice_splitter/invoice_splitter_v1.rb +8 -0
- data/lib/mindee/product/invoice_splitter/invoice_splitter_v1_document.rb +2 -2
- data/lib/mindee/product/invoice_splitter/invoice_splitter_v1_page.rb +1 -1
- data/lib/mindee/product/multi_receipts_detector/multi_receipts_detector_v1.rb +9 -3
- data/lib/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_document.rb +3 -3
- data/lib/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_page.rb +9 -5
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1.rb +9 -3
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_added_sugar.rb +7 -4
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_calorie.rb +7 -4
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_cholesterol.rb +7 -4
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_dietary_fiber.rb +7 -4
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_document.rb +58 -20
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_nutrient.rb +13 -7
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_nutrients.rb +68 -0
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_page.rb +9 -5
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_protein.rb +7 -4
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_saturated_fat.rb +7 -4
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_serving_size.rb +3 -2
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_sodium.rb +7 -4
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_total_carbohydrate.rb +7 -4
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_total_fat.rb +7 -4
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_total_sugar.rb +7 -4
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_trans_fat.rb +7 -4
- data/lib/mindee/product/passport/passport_v1.rb +9 -3
- data/lib/mindee/product/passport/passport_v1_document.rb +37 -13
- data/lib/mindee/product/passport/passport_v1_page.rb +9 -5
- data/lib/mindee/product/receipt/receipt_v5.rb +9 -3
- data/lib/mindee/product/receipt/receipt_v5_document.rb +54 -24
- data/lib/mindee/product/receipt/receipt_v5_line_item.rb +13 -7
- data/lib/mindee/product/receipt/receipt_v5_line_items.rb +54 -0
- data/lib/mindee/product/receipt/receipt_v5_page.rb +9 -5
- data/lib/mindee/product/resume/resume_v1.rb +9 -3
- data/lib/mindee/product/resume/resume_v1_certificate.rb +1 -1
- data/lib/mindee/product/resume/resume_v1_certificates.rb +58 -0
- data/lib/mindee/product/resume/resume_v1_document.rb +60 -47
- data/lib/mindee/product/resume/resume_v1_education.rb +1 -1
- data/lib/mindee/product/resume/resume_v1_educations.rb +64 -0
- data/lib/mindee/product/resume/resume_v1_language.rb +1 -1
- data/lib/mindee/product/resume/resume_v1_languages.rb +54 -0
- data/lib/mindee/product/resume/resume_v1_page.rb +9 -5
- data/lib/mindee/product/resume/resume_v1_professional_experience.rb +1 -1
- data/lib/mindee/product/resume/resume_v1_professional_experiences.rb +68 -0
- data/lib/mindee/product/resume/resume_v1_social_networks_url.rb +1 -1
- data/lib/mindee/product/resume/resume_v1_social_networks_urls.rb +54 -0
- data/lib/mindee/product/universal/universal.rb +46 -0
- data/lib/mindee/product/universal/universal_document.rb +32 -0
- data/lib/mindee/product/{generated/generated_v1_page.rb → universal/universal_page.rb} +14 -14
- data/lib/mindee/product/{generated/generated_v1_prediction.rb → universal/universal_prediction.rb} +32 -24
- data/lib/mindee/product/us/bank_check/bank_check_v1.rb +9 -3
- data/lib/mindee/product/us/bank_check/bank_check_v1_document.rb +20 -8
- data/lib/mindee/product/us/bank_check/bank_check_v1_page.rb +15 -8
- data/lib/mindee/product/us/healthcare_card/healthcare_card_v1.rb +9 -3
- data/lib/mindee/product/us/healthcare_card/healthcare_card_v1_copay.rb +5 -3
- data/lib/mindee/product/us/healthcare_card/healthcare_card_v1_copays.rb +52 -0
- data/lib/mindee/product/us/healthcare_card/healthcare_card_v1_document.rb +46 -19
- data/lib/mindee/product/us/healthcare_card/healthcare_card_v1_page.rb +9 -5
- data/lib/mindee/product/us/us_mail/us_mail_v3.rb +9 -3
- data/lib/mindee/product/us/us_mail/us_mail_v3_document.rb +20 -12
- data/lib/mindee/product/us/us_mail/us_mail_v3_page.rb +9 -5
- data/lib/mindee/product/us/us_mail/us_mail_v3_recipient_address.rb +2 -2
- data/lib/mindee/product/us/us_mail/us_mail_v3_recipient_addresses.rb +65 -0
- data/lib/mindee/product/us/us_mail/us_mail_v3_sender_address.rb +1 -1
- data/lib/mindee/product/us/w9/w9_v1.rb +10 -4
- data/lib/mindee/product/us/w9/w9_v1_page.rb +49 -18
- data/lib/mindee/product.rb +2 -8
- data/lib/mindee/version.rb +2 -2
- data/lib/mindee.rb +22 -9
- data/mindee.gemspec +19 -17
- data/sig/custom/marcel.rbs +3 -0
- data/sig/custom/mini_magick.rbs +24 -0
- data/sig/custom/net_http.rbs +34 -0
- data/sig/custom/origami.rbs +54 -0
- data/sig/mindee/client.rbs +63 -0
- data/sig/mindee/errors/mindee_error.rbs +13 -0
- data/sig/mindee/errors/mindee_http_error.rbs +16 -0
- data/sig/mindee/errors/mindee_input_error.rbs +17 -0
- data/sig/mindee/extraction/multi_receipts_extractor.rbs +6 -0
- data/sig/mindee/geometry/min_max.rbs +10 -0
- data/sig/mindee/geometry/point.rbs +13 -0
- data/sig/mindee/geometry/polygon.rbs +9 -0
- data/sig/mindee/geometry/quadrilateral.rbs +18 -0
- data/sig/mindee/geometry/utils.rbs +13 -0
- data/sig/mindee/http/endpoint.rbs +26 -0
- data/sig/mindee/http/http_error_handler.rbs +10 -0
- data/sig/mindee/http/response_validation.rbs +10 -0
- data/sig/mindee/http/workflow_endpoint.rbs +14 -0
- data/sig/mindee/image/extracted_image.rbs +15 -0
- data/sig/mindee/image/image_compressor.rbs +8 -0
- data/sig/mindee/image/image_extractor.rbs +13 -0
- data/sig/mindee/image/image_utils.rbs +19 -0
- data/sig/mindee/input/local_response.rbs +13 -0
- data/sig/mindee/input/sources/base64_input_source.rbs +11 -0
- data/sig/mindee/input/sources/bytes_input_source.rbs +10 -0
- data/sig/mindee/input/sources/file_input_source.rbs +10 -0
- data/sig/mindee/input/sources/local_input_source.rbs +24 -0
- data/sig/mindee/input/sources/path_input_source.rbs +10 -0
- data/sig/mindee/input/sources/url_input_source.rbs +20 -0
- data/sig/mindee/logging/logger.rbs +9 -0
- data/sig/mindee/parsing/common/api_request.rbs +15 -0
- data/sig/mindee/parsing/common/api_response.rbs +27 -0
- data/sig/mindee/parsing/common/document.rbs +20 -0
- data/sig/mindee/parsing/common/execution.rbs +23 -0
- data/sig/mindee/parsing/common/execution_file.rbs +12 -0
- data/sig/mindee/parsing/common/execution_priority.rbs +13 -0
- data/sig/mindee/parsing/common/extras/cropper_extra.rbs +14 -0
- data/sig/mindee/parsing/common/extras/extras.rbs +18 -0
- data/sig/mindee/parsing/common/extras/full_text_ocr_extra.rbs +15 -0
- data/sig/mindee/parsing/common/inference.rbs +19 -0
- data/sig/mindee/parsing/common/job.rbs +16 -0
- data/sig/mindee/parsing/common/ocr/mvision_v1.rbs +15 -0
- data/sig/mindee/parsing/common/ocr/ocr.rbs +39 -0
- data/sig/mindee/parsing/common/orientation.rbs +12 -0
- data/sig/mindee/parsing/common/page.rbs +15 -0
- data/sig/mindee/parsing/common/prediction.rbs +11 -0
- data/sig/mindee/parsing/common/product.rbs +13 -0
- data/sig/mindee/parsing/common/workflow_response.rbs +13 -0
- data/sig/mindee/parsing/standard/abstract_field.rbs +19 -0
- data/sig/mindee/parsing/standard/amount_field.rbs +12 -0
- data/sig/mindee/parsing/standard/base_field.rbs +12 -0
- data/sig/mindee/parsing/standard/boolean_field.rbs +12 -0
- data/sig/mindee/parsing/standard/classification_field.rbs +10 -0
- data/sig/mindee/parsing/standard/company_registration_field.rbs +14 -0
- data/sig/mindee/parsing/standard/date_field.rbs +14 -0
- data/sig/mindee/parsing/standard/feature_field.rbs +10 -0
- data/sig/mindee/parsing/standard/locale_field.rbs +16 -0
- data/sig/mindee/parsing/standard/payment_details_field.rbs +15 -0
- data/sig/mindee/parsing/standard/position_field.rbs +17 -0
- data/sig/mindee/parsing/standard/string_field.rbs +12 -0
- data/sig/mindee/parsing/standard/tax_field.rbs +23 -0
- data/sig/mindee/parsing/universal/universal_list_field.rbs +17 -0
- data/sig/mindee/parsing/universal/universal_object_field.rbs +23 -0
- data/sig/mindee/pdf/extracted_pdf.rbs +15 -0
- data/sig/mindee/pdf/pdf_compressor.rbs +15 -0
- data/sig/mindee/pdf/pdf_extractor.rbs +16 -0
- data/sig/mindee/pdf/pdf_processor.rbs +12 -0
- data/sig/mindee/pdf/pdf_tools.rbs +23 -0
- data/sig/mindee/product/barcode_reader/barcode_reader_v1.rbs +11 -0
- data/sig/mindee/product/barcode_reader/barcode_reader_v1_document.rbs +14 -0
- data/sig/mindee/product/barcode_reader/barcode_reader_v1_page.rbs +15 -0
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1.rbs +11 -0
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_carrier.rbs +14 -0
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_carrier_item.rbs +19 -0
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_carrier_items.rbs +13 -0
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_consignee.rbs +15 -0
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_document.rbs +25 -0
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_notify_party.rbs +15 -0
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_page.rbs +15 -0
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_shipper.rbs +15 -0
- data/sig/mindee/product/business_card/business_card_v1.rbs +11 -0
- data/sig/mindee/product/business_card/business_card_v1_document.rbs +23 -0
- data/sig/mindee/product/business_card/business_card_v1_page.rbs +15 -0
- data/sig/mindee/product/cropper/cropper_v1.rbs +11 -0
- data/sig/mindee/product/cropper/cropper_v1_document.rbs +12 -0
- data/sig/mindee/product/cropper/cropper_v1_page.rbs +16 -0
- data/sig/mindee/product/delivery_note/delivery_note_v1.rbs +11 -0
- data/sig/mindee/product/delivery_note/delivery_note_v1_document.rbs +19 -0
- data/sig/mindee/product/delivery_note/delivery_note_v1_page.rbs +15 -0
- data/sig/mindee/product/driver_license/driver_license_v1.rbs +11 -0
- data/sig/mindee/product/driver_license/driver_license_v1_document.rbs +25 -0
- data/sig/mindee/product/driver_license/driver_license_v1_page.rbs +15 -0
- data/sig/mindee/product/eu/license_plate/license_plate_v1.rbs +13 -0
- data/sig/mindee/product/eu/license_plate/license_plate_v1_document.rbs +15 -0
- data/sig/mindee/product/eu/license_plate/license_plate_v1_page.rbs +17 -0
- data/sig/mindee/product/financial_document/financial_document_v1.rbs +11 -0
- data/sig/mindee/product/financial_document/financial_document_v1_document.rbs +46 -0
- data/sig/mindee/product/financial_document/financial_document_v1_line_item.rbs +21 -0
- data/sig/mindee/product/financial_document/financial_document_v1_line_items.rbs +13 -0
- data/sig/mindee/product/financial_document/financial_document_v1_page.rbs +15 -0
- data/sig/mindee/product/fr/bank_account_details/bank_account_details_v1.rbs +13 -0
- data/sig/mindee/product/fr/bank_account_details/bank_account_details_v1_document.rbs +17 -0
- data/sig/mindee/product/fr/bank_account_details/bank_account_details_v1_page.rbs +17 -0
- data/sig/mindee/product/fr/bank_account_details/bank_account_details_v2.rbs +13 -0
- data/sig/mindee/product/fr/bank_account_details/bank_account_details_v2_bban.rbs +17 -0
- data/sig/mindee/product/fr/bank_account_details/bank_account_details_v2_document.rbs +18 -0
- data/sig/mindee/product/fr/bank_account_details/bank_account_details_v2_page.rbs +17 -0
- data/sig/mindee/product/fr/bank_statement/bank_statement_v2.rbs +13 -0
- data/sig/mindee/product/fr/bank_statement/bank_statement_v2_document.rbs +29 -0
- data/sig/mindee/product/fr/bank_statement/bank_statement_v2_page.rbs +17 -0
- data/sig/mindee/product/fr/bank_statement/bank_statement_v2_transaction.rbs +18 -0
- data/sig/mindee/product/fr/bank_statement/bank_statement_v2_transactions.rbs +15 -0
- data/sig/mindee/product/fr/carte_grise/carte_grise_v1.rbs +13 -0
- data/sig/mindee/product/fr/carte_grise/carte_grise_v1_document.rbs +55 -0
- data/sig/mindee/product/fr/carte_grise/carte_grise_v1_page.rbs +17 -0
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1.rbs +13 -0
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_document.rbs +34 -0
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_energy_consumer.rbs +15 -0
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_energy_supplier.rbs +15 -0
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_energy_usage.rbs +21 -0
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_energy_usages.rbs +15 -0
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_meter_detail.rbs +16 -0
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_page.rbs +17 -0
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_subscription.rbs +21 -0
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_subscriptions.rbs +15 -0
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_taxes_and_contribution.rbs +21 -0
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_taxes_and_contributions.rbs +15 -0
- data/sig/mindee/product/fr/health_card/health_card_v1.rbs +13 -0
- data/sig/mindee/product/fr/health_card/health_card_v1_document.rbs +18 -0
- data/sig/mindee/product/fr/health_card/health_card_v1_page.rbs +17 -0
- data/sig/mindee/product/fr/id_card/id_card_v1.rbs +13 -0
- data/sig/mindee/product/fr/id_card/id_card_v1_document.rbs +24 -0
- data/sig/mindee/product/fr/id_card/id_card_v1_page.rbs +18 -0
- data/sig/mindee/product/fr/id_card/id_card_v2.rbs +13 -0
- data/sig/mindee/product/fr/id_card/id_card_v2_document.rbs +29 -0
- data/sig/mindee/product/fr/id_card/id_card_v2_page.rbs +19 -0
- data/sig/mindee/product/fr/payslip/payslip_v2.rbs +13 -0
- data/sig/mindee/product/fr/payslip/payslip_v2_bank_account_detail.rbs +16 -0
- data/sig/mindee/product/fr/payslip/payslip_v2_document.rbs +24 -0
- data/sig/mindee/product/fr/payslip/payslip_v2_employee.rbs +20 -0
- data/sig/mindee/product/fr/payslip/payslip_v2_employer.rbs +20 -0
- data/sig/mindee/product/fr/payslip/payslip_v2_employment.rbs +19 -0
- data/sig/mindee/product/fr/payslip/payslip_v2_page.rbs +17 -0
- data/sig/mindee/product/fr/payslip/payslip_v2_pay_detail.rbs +23 -0
- data/sig/mindee/product/fr/payslip/payslip_v2_pay_period.rbs +18 -0
- data/sig/mindee/product/fr/payslip/payslip_v2_pto.rbs +16 -0
- data/sig/mindee/product/fr/payslip/payslip_v2_salary_detail.rbs +19 -0
- data/sig/mindee/product/fr/payslip/payslip_v2_salary_details.rbs +15 -0
- data/sig/mindee/product/fr/payslip/payslip_v3.rbs +13 -0
- data/sig/mindee/product/fr/payslip/payslip_v3_bank_account_detail.rbs +16 -0
- data/sig/mindee/product/fr/payslip/payslip_v3_document.rbs +26 -0
- data/sig/mindee/product/fr/payslip/payslip_v3_employee.rbs +20 -0
- data/sig/mindee/product/fr/payslip/payslip_v3_employer.rbs +20 -0
- data/sig/mindee/product/fr/payslip/payslip_v3_employment.rbs +20 -0
- data/sig/mindee/product/fr/payslip/payslip_v3_page.rbs +17 -0
- data/sig/mindee/product/fr/payslip/payslip_v3_paid_time_off.rbs +20 -0
- data/sig/mindee/product/fr/payslip/payslip_v3_paid_time_offs.rbs +15 -0
- data/sig/mindee/product/fr/payslip/payslip_v3_pay_detail.rbs +23 -0
- data/sig/mindee/product/fr/payslip/payslip_v3_pay_period.rbs +18 -0
- data/sig/mindee/product/fr/payslip/payslip_v3_salary_detail.rbs +20 -0
- data/sig/mindee/product/fr/payslip/payslip_v3_salary_details.rbs +15 -0
- data/sig/mindee/product/ind/indian_passport/indian_passport_v1.rbs +13 -0
- data/sig/mindee/product/ind/indian_passport/indian_passport_v1_document.rbs +37 -0
- data/sig/mindee/product/ind/indian_passport/indian_passport_v1_page.rbs +17 -0
- data/sig/mindee/product/international_id/international_id_v2.rbs +11 -0
- data/sig/mindee/product/international_id/international_id_v2_document.rbs +29 -0
- data/sig/mindee/product/international_id/international_id_v2_page.rbs +15 -0
- data/sig/mindee/product/invoice/invoice_v4.rbs +11 -0
- data/sig/mindee/product/invoice/invoice_v4_document.rbs +40 -0
- data/sig/mindee/product/invoice/invoice_v4_line_item.rbs +21 -0
- data/sig/mindee/product/invoice/invoice_v4_line_items.rbs +13 -0
- data/sig/mindee/product/invoice/invoice_v4_page.rbs +15 -0
- data/sig/mindee/product/invoice_splitter/invoice_splitter_v1.rbs +14 -0
- data/sig/mindee/product/invoice_splitter/invoice_splitter_v1_document.rbs +19 -0
- data/sig/mindee/product/invoice_splitter/invoice_splitter_v1_page.rbs +13 -0
- data/sig/mindee/product/multi_receipts_detector/multi_receipts_detector_v1.rbs +11 -0
- data/sig/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_document.rbs +13 -0
- data/sig/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_page.rbs +15 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1.rbs +11 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_added_sugar.rbs +14 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_calorie.rbs +14 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_cholesterol.rbs +14 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_dietary_fiber.rbs +14 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_document.rbs +28 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_nutrient.rbs +18 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_nutrients.rbs +13 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_page.rbs +15 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_protein.rbs +14 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_saturated_fat.rbs +14 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_serving_size.rbs +13 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_sodium.rbs +15 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_total_carbohydrate.rbs +14 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_total_fat.rbs +14 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_total_sugar.rbs +14 -0
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_trans_fat.rbs +14 -0
- data/sig/mindee/product/passport/passport_v1.rbs +11 -0
- data/sig/mindee/product/passport/passport_v1_document.rbs +23 -0
- data/sig/mindee/product/passport/passport_v1_page.rbs +15 -0
- data/sig/mindee/product/receipt/receipt_v5.rbs +11 -0
- data/sig/mindee/product/receipt/receipt_v5_document.rbs +31 -0
- data/sig/mindee/product/receipt/receipt_v5_line_item.rbs +17 -0
- data/sig/mindee/product/receipt/receipt_v5_line_items.rbs +13 -0
- data/sig/mindee/product/receipt/receipt_v5_page.rbs +15 -0
- data/sig/mindee/product/resume/resume_v1.rbs +11 -0
- data/sig/mindee/product/resume/resume_v1_certificate.rbs +17 -0
- data/sig/mindee/product/resume/resume_v1_certificates.rbs +13 -0
- data/sig/mindee/product/resume/resume_v1_document.rbs +39 -0
- data/sig/mindee/product/resume/resume_v1_education.rbs +20 -0
- data/sig/mindee/product/resume/resume_v1_educations.rbs +13 -0
- data/sig/mindee/product/resume/resume_v1_language.rbs +15 -0
- data/sig/mindee/product/resume/resume_v1_languages.rbs +13 -0
- data/sig/mindee/product/resume/resume_v1_page.rbs +15 -0
- data/sig/mindee/product/resume/resume_v1_professional_experience.rbs +22 -0
- data/sig/mindee/product/resume/resume_v1_professional_experiences.rbs +13 -0
- data/sig/mindee/product/resume/resume_v1_social_networks_url.rbs +15 -0
- data/sig/mindee/product/resume/resume_v1_social_networks_urls.rbs +13 -0
- data/sig/mindee/product/universal/universal.rbs +14 -0
- data/sig/mindee/product/universal/universal_document.rbs +10 -0
- data/sig/mindee/product/universal/universal_page.rbs +14 -0
- data/sig/mindee/product/universal/universal_prediction.rbs +19 -0
- data/sig/mindee/product/us/bank_check/bank_check_v1.rbs +13 -0
- data/sig/mindee/product/us/bank_check/bank_check_v1_document.rbs +20 -0
- data/sig/mindee/product/us/bank_check/bank_check_v1_page.rbs +19 -0
- data/sig/mindee/product/us/healthcare_card/healthcare_card_v1.rbs +13 -0
- data/sig/mindee/product/us/healthcare_card/healthcare_card_v1_copay.rbs +17 -0
- data/sig/mindee/product/us/healthcare_card/healthcare_card_v1_copays.rbs +15 -0
- data/sig/mindee/product/us/healthcare_card/healthcare_card_v1_document.rbs +28 -0
- data/sig/mindee/product/us/healthcare_card/healthcare_card_v1_page.rbs +17 -0
- data/sig/mindee/product/us/us_mail/us_mail_v3.rbs +13 -0
- data/sig/mindee/product/us/us_mail/us_mail_v3_document.rbs +21 -0
- data/sig/mindee/product/us/us_mail/us_mail_v3_page.rbs +17 -0
- data/sig/mindee/product/us/us_mail/us_mail_v3_recipient_address.rbs +23 -0
- data/sig/mindee/product/us/us_mail/us_mail_v3_recipient_addresses.rbs +15 -0
- data/sig/mindee/product/us/us_mail/us_mail_v3_sender_address.rbs +18 -0
- data/sig/mindee/product/us/w9/w9_v1.rbs +13 -0
- data/sig/mindee/product/us/w9/w9_v1_document.rbs +14 -0
- data/sig/mindee/product/us/w9/w9_v1_page.rbs +29 -0
- data/sig/mindee/version.rbs +6 -0
- data/sig/mindee.rbs +59 -0
- metadata +395 -103
- data/docs/bank_statement_fr_v1.md +0 -178
- data/docs/code_samples/bank_statement_fr_v1_async.txt +0 -19
- data/docs/code_samples/custom_v1.txt +0 -33
- data/docs/code_samples/eu_driver_license_v1.txt +0 -19
- data/docs/code_samples/expense_receipts_v4.txt +0 -19
- data/docs/code_samples/proof_of_address_v1.txt +0 -19
- data/docs/code_samples/us_mail_v2_async.txt +0 -19
- data/docs/code_samples/workflow_execution.txt +0 -29
- data/docs/custom_v1.md +0 -111
- data/docs/payslip_fra_v2.md +0 -294
- data/lib/mindee/extraction/common.rb +0 -4
- data/lib/mindee/extraction/multi_receipts_extractor/multi_receipts_extractor.rb +0 -32
- data/lib/mindee/extraction/pdf_extractor.rb +0 -4
- data/lib/mindee/extraction/tax_extractor/ocr_extractor.rb +0 -110
- data/lib/mindee/extraction/tax_extractor/tax_extractor.rb +0 -338
- data/lib/mindee/extraction/tax_extractor.rb +0 -3
- data/lib/mindee/parsing/custom/classification_field.rb +0 -28
- data/lib/mindee/parsing/custom/list_field.rb +0 -78
- data/lib/mindee/parsing/custom.rb +0 -4
- data/lib/mindee/parsing/generated.rb +0 -4
- data/lib/mindee/product/custom/custom_v1.rb +0 -36
- data/lib/mindee/product/custom/custom_v1_document.rb +0 -60
- data/lib/mindee/product/custom/custom_v1_page.rb +0 -32
- data/lib/mindee/product/eu/driver_license/driver_license_v1.rb +0 -41
- data/lib/mindee/product/eu/driver_license/driver_license_v1_document.rb +0 -88
- data/lib/mindee/product/eu/driver_license/driver_license_v1_page.rb +0 -53
- data/lib/mindee/product/fr/bank_statement/bank_statement_v1.rb +0 -41
- data/lib/mindee/product/fr/bank_statement/bank_statement_v1_page.rb +0 -34
- data/lib/mindee/product/generated/generated_v1.rb +0 -38
- data/lib/mindee/product/generated/generated_v1_document.rb +0 -35
- data/lib/mindee/product/proof_of_address/proof_of_address_v1.rb +0 -39
- data/lib/mindee/product/proof_of_address/proof_of_address_v1_document.rb +0 -83
- data/lib/mindee/product/proof_of_address/proof_of_address_v1_page.rb +0 -32
- data/lib/mindee/product/receipt/receipt_v4.rb +0 -36
- data/lib/mindee/product/receipt/receipt_v4_document.rb +0 -86
- data/lib/mindee/product/receipt/receipt_v4_page.rb +0 -32
- data/lib/mindee/product/us/driver_license/driver_license_v1.rb +0 -41
- data/lib/mindee/product/us/driver_license/driver_license_v1_document.rb +0 -113
- data/lib/mindee/product/us/driver_license/driver_license_v1_page.rb +0 -53
- data/lib/mindee/product/us/us_mail/us_mail_v2.rb +0 -41
- data/lib/mindee/product/us/us_mail/us_mail_v2_document.rb +0 -100
- data/lib/mindee/product/us/us_mail/us_mail_v2_page.rb +0 -34
- data/lib/mindee/product/us/us_mail/us_mail_v2_recipient_address.rb +0 -105
- data/lib/mindee/product/us/us_mail/us_mail_v2_sender_address.rb +0 -66
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mindee
|
4
|
+
module Errors
|
5
|
+
# Base class for all custom mindee errors.
|
6
|
+
class MindeeError < StandardError; end
|
7
|
+
|
8
|
+
# Errors relating to library issues.
|
9
|
+
class MindeeAPIError < MindeeError; end
|
10
|
+
|
11
|
+
# Errors relating to misuse of the library.
|
12
|
+
class MindeeConfigurationError < MindeeError; end
|
13
|
+
|
14
|
+
# Errors relating to geometric manipulation issues.
|
15
|
+
class MindeeGeometryError < MindeeError; end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'mindee_error'
|
4
|
+
|
5
|
+
module Mindee
|
6
|
+
module Errors
|
7
|
+
# API HttpError
|
8
|
+
class MindeeHTTPError < MindeeError
|
9
|
+
# @return [String]
|
10
|
+
attr_reader :status_code
|
11
|
+
# @return [Integer]
|
12
|
+
attr_reader :api_code
|
13
|
+
# @return [String]
|
14
|
+
attr_reader :api_details
|
15
|
+
# @return [String]
|
16
|
+
attr_reader :api_message
|
17
|
+
|
18
|
+
# @param http_error [Hash]
|
19
|
+
# @param url [String]
|
20
|
+
# @param code [Integer]
|
21
|
+
def initialize(http_error, url, code)
|
22
|
+
@status_code = code
|
23
|
+
@api_code = http_error['code']
|
24
|
+
@api_details = http_error['details']
|
25
|
+
@api_message = http_error['message']
|
26
|
+
super("#{url} #{@status_code} HTTP error: #{@api_details} - #{@api_message}")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Base class for all client-side errors.
|
31
|
+
class MindeeHTTPClientError < MindeeHTTPError; end
|
32
|
+
|
33
|
+
# Base class for all server-side errors.
|
34
|
+
class MindeeHTTPServerError < MindeeHTTPError; end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mindee
|
4
|
+
module Errors
|
5
|
+
# Base class for errors relating to input documents.
|
6
|
+
class MindeeInputError < MindeeError; end
|
7
|
+
|
8
|
+
# Errors relating to sources (documents) handling.
|
9
|
+
class MindeeSourceError < MindeeInputError; end
|
10
|
+
|
11
|
+
# Errors relating to mime type issues.
|
12
|
+
class MindeeMimeTypeError < MindeeSourceError
|
13
|
+
# @return [String]
|
14
|
+
attr_reader :invalid_mimetype
|
15
|
+
|
16
|
+
# @param mime_type [String]
|
17
|
+
def initialize(mime_type)
|
18
|
+
@invalid_mimetype = mime_type
|
19
|
+
super("'#{@invalid_mimetype}' mime type not allowed, must be one of" \
|
20
|
+
"#{Mindee::Input::Source::ALLOWED_MIME_TYPES.join(', ')}")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Errors relating to the handling of images.
|
25
|
+
class MindeeImageError < MindeeInputError; end
|
26
|
+
|
27
|
+
# Errors relating to the handling of PDF documents.
|
28
|
+
class MindeePDFError < MindeeInputError; end
|
29
|
+
end
|
30
|
+
end
|
@@ -1,3 +1,30 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
module Mindee
|
4
|
+
# Custom extraction module
|
5
|
+
module Extraction
|
6
|
+
# Multi-receipts extraction
|
7
|
+
# Extracts individual receipts from multi-receipts documents.
|
8
|
+
#
|
9
|
+
# @param input_source [LocalInputSource] Local Input Source to extract sub-receipts from.
|
10
|
+
# @param inference [Inference] Results of the inference.
|
11
|
+
# @return [Array<ExtractedImage>] Individual extracted receipts as an array of ExtractedMultiReceiptsImage.
|
12
|
+
def self.extract_receipts(input_source, inference)
|
13
|
+
images = []
|
14
|
+
unless inference.prediction.receipts
|
15
|
+
raise Errors::MindeeInputError,
|
16
|
+
'No possible receipts candidates found for Multi-Receipts extraction.'
|
17
|
+
end
|
18
|
+
|
19
|
+
(0...input_source.count_pages).each do |page_id|
|
20
|
+
receipt_positions = inference.pages[page_id].prediction.receipts.map(&:bounding_box)
|
21
|
+
images.concat(
|
22
|
+
Mindee::Image::ImageExtractor.extract_multiple_images_from_source(input_source, page_id + 1,
|
23
|
+
receipt_positions)
|
24
|
+
)
|
25
|
+
end
|
26
|
+
|
27
|
+
images
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/mindee/extraction.rb
CHANGED
@@ -13,7 +13,7 @@ module Mindee
|
|
13
13
|
|
14
14
|
# Determine if the Point is in the Polygon's Y-axis.
|
15
15
|
# @param point [Mindee::Geometry::Point]
|
16
|
-
# @return [
|
16
|
+
# @return [bool]
|
17
17
|
def point_in_y?(point)
|
18
18
|
min_max = Geometry.get_min_max_y(self)
|
19
19
|
min_max.min <= point.y && point.y <= min_max.max
|
@@ -4,7 +4,7 @@ module Mindee
|
|
4
4
|
# Various helper functions for geometry.
|
5
5
|
module Geometry
|
6
6
|
# Transform a prediction into a Quadrilateral.
|
7
|
-
# @param prediction [
|
7
|
+
# @param prediction [Array<Array<Float>>]
|
8
8
|
# @return [Mindee::Geometry::Quadrilateral]
|
9
9
|
def self.quadrilateral_from_prediction(prediction)
|
10
10
|
throw "Prediction must have exactly 4 points, found #{prediction.size}" if prediction.size != 4
|
data/lib/mindee/http/endpoint.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'json'
|
4
4
|
require 'net/http'
|
5
|
-
require_relative '
|
5
|
+
require_relative 'http_error_handler'
|
6
6
|
require_relative '../version'
|
7
7
|
require_relative 'response_validation'
|
8
8
|
|
@@ -24,7 +24,7 @@ module Mindee
|
|
24
24
|
TIMEOUT_DEFAULT = 120
|
25
25
|
|
26
26
|
# Default value for the user agent.
|
27
|
-
USER_AGENT = "mindee-api-ruby@v#{Mindee::VERSION} ruby-v#{RUBY_VERSION} #{Mindee::PLATFORM}"
|
27
|
+
USER_AGENT = "mindee-api-ruby@v#{Mindee::VERSION} ruby-v#{RUBY_VERSION} #{Mindee::PLATFORM}".freeze
|
28
28
|
|
29
29
|
# Generic API endpoint for a product.
|
30
30
|
class Endpoint
|
@@ -40,17 +40,20 @@ module Mindee
|
|
40
40
|
@url_name = url_name
|
41
41
|
@version = version
|
42
42
|
@request_timeout = ENV.fetch(REQUEST_TIMEOUT_ENV_NAME, TIMEOUT_DEFAULT).to_i
|
43
|
+
if api_key.nil? && !ENV.fetch(API_KEY_ENV_NAME, API_KEY_DEFAULT).to_s.empty?
|
44
|
+
logger.debug('API key set from environment')
|
45
|
+
end
|
43
46
|
@api_key = api_key.nil? || api_key.empty? ? ENV.fetch(API_KEY_ENV_NAME, API_KEY_DEFAULT) : api_key
|
44
47
|
base_url = ENV.fetch(BASE_URL_ENV_NAME, BASE_URL_DEFAULT)
|
45
48
|
@url_root = "#{base_url.chomp('/')}/products/#{@owner}/#{@url_name}/v#{@version}"
|
46
49
|
end
|
47
50
|
|
48
51
|
# Call the prediction API.
|
49
|
-
# @param input_source [Mindee::Input::Source::LocalInputSource, Mindee::Input::Source::
|
50
|
-
# @param all_words [
|
51
|
-
# @param full_text [
|
52
|
-
# @param close_file [
|
53
|
-
# @param cropper [
|
52
|
+
# @param input_source [Mindee::Input::Source::LocalInputSource, Mindee::Input::Source::URLInputSource]
|
53
|
+
# @param all_words [bool] Whether the full word extraction needs to be performed
|
54
|
+
# @param full_text [bool] Whether to include the full OCR text response in compatible APIs
|
55
|
+
# @param close_file [bool] Whether the file will be closed after reading
|
56
|
+
# @param cropper [bool] Whether a cropping operation will be applied
|
54
57
|
# @return [Array]
|
55
58
|
def predict(input_source, all_words, full_text, close_file, cropper)
|
56
59
|
check_api_key
|
@@ -61,29 +64,34 @@ module Mindee
|
|
61
64
|
close_file: close_file,
|
62
65
|
cropper: cropper
|
63
66
|
)
|
64
|
-
|
65
|
-
|
67
|
+
if !response.nil? && response.respond_to?(:body)
|
68
|
+
hashed_response = JSON.parse(response.body, object_class: Hash)
|
69
|
+
return [hashed_response, response.body] if ResponseValidation.valid_sync_response?(response)
|
66
70
|
|
67
|
-
|
68
|
-
|
71
|
+
ResponseValidation.clean_request!(response)
|
72
|
+
end
|
73
|
+
error = ErrorHandler.handle_error(@url_name, response)
|
69
74
|
raise error
|
70
75
|
end
|
71
76
|
|
72
77
|
# Call the prediction API.
|
73
|
-
# @param input_source [Mindee::Input::Source::LocalInputSource, Mindee::Input::Source::
|
74
|
-
# @param all_words [
|
75
|
-
# @param full_text [
|
76
|
-
# @param close_file [
|
77
|
-
# @param cropper [
|
78
|
+
# @param input_source [Mindee::Input::Source::LocalInputSource, Mindee::Input::Source::URLInputSource]
|
79
|
+
# @param all_words [bool] Whether the full word extraction needs to be performed
|
80
|
+
# @param full_text [bool] Whether to include the full OCR text response in compatible APIs.
|
81
|
+
# @param close_file [bool] Whether the file will be closed after reading
|
82
|
+
# @param cropper [bool] Whether a cropping operation will be applied
|
78
83
|
# @return [Array]
|
79
84
|
def predict_async(input_source, all_words, full_text, close_file, cropper)
|
80
85
|
check_api_key
|
81
86
|
response = document_queue_req_get(input_source, all_words, full_text, close_file, cropper)
|
82
|
-
|
83
|
-
|
87
|
+
if !response.nil? && response.respond_to?(:body)
|
88
|
+
hashed_response = JSON.parse(response.body, object_class: Hash)
|
89
|
+
return [hashed_response, response.body] if ResponseValidation.valid_async_response?(response)
|
84
90
|
|
85
|
-
|
86
|
-
|
91
|
+
ResponseValidation.clean_request!(response)
|
92
|
+
end
|
93
|
+
|
94
|
+
error = ErrorHandler.handle_error(@url_name, response)
|
87
95
|
raise error
|
88
96
|
end
|
89
97
|
|
@@ -97,22 +105,22 @@ module Mindee
|
|
97
105
|
return [hashed_response, response.body] if ResponseValidation.valid_async_response?(response)
|
98
106
|
|
99
107
|
ResponseValidation.clean_request!(response)
|
100
|
-
error =
|
108
|
+
error = ErrorHandler.handle_error(@url_name, response)
|
101
109
|
raise error
|
102
110
|
end
|
103
111
|
|
104
112
|
private
|
105
113
|
|
106
|
-
# @param input_source [Mindee::Input::Source::LocalInputSource, Mindee::Input::Source::
|
107
|
-
# @param all_words [
|
108
|
-
# @param full_text [
|
109
|
-
# @param close_file [
|
110
|
-
# @param cropper [
|
114
|
+
# @param input_source [Mindee::Input::Source::LocalInputSource, Mindee::Input::Source::URLInputSource]
|
115
|
+
# @param all_words [bool] Whether the full word extraction needs to be performed
|
116
|
+
# @param full_text [bool] Whether to include the full OCR text response in compatible APIs.
|
117
|
+
# @param close_file [bool] Whether the file will be closed after reading
|
118
|
+
# @param cropper [bool] Whether a cropping operation will be applied
|
111
119
|
# @return [Net::HTTPResponse, nil]
|
112
120
|
def predict_req_post(input_source, all_words: false, full_text: false, close_file: true, cropper: false)
|
113
121
|
uri = URI("#{@url_root}/predict")
|
114
122
|
|
115
|
-
params = {}
|
123
|
+
params = {} # : Hash[Symbol | String, untyped]
|
116
124
|
params[:cropper] = 'true' if cropper
|
117
125
|
params[:full_text_ocr] = 'true' if full_text
|
118
126
|
uri.query = URI.encode_www_form(params)
|
@@ -122,10 +130,10 @@ module Mindee
|
|
122
130
|
'User-Agent' => USER_AGENT,
|
123
131
|
}
|
124
132
|
req = Net::HTTP::Post.new(uri, headers)
|
125
|
-
form_data = if input_source.is_a?(Mindee::Input::Source::
|
133
|
+
form_data = if input_source.is_a?(Mindee::Input::Source::URLInputSource)
|
126
134
|
[['document', input_source.url]]
|
127
135
|
else
|
128
|
-
[input_source.
|
136
|
+
[input_source.read_contents(close: close_file)]
|
129
137
|
end
|
130
138
|
form_data.push ['include_mvision', 'true'] if all_words
|
131
139
|
|
@@ -137,16 +145,16 @@ module Mindee
|
|
137
145
|
response
|
138
146
|
end
|
139
147
|
|
140
|
-
# @param input_source [Mindee::Input::Source::LocalInputSource, Mindee::Input::Source::
|
141
|
-
# @param all_words [
|
142
|
-
# @param full_text [
|
143
|
-
# @param close_file [
|
144
|
-
# @param cropper [
|
148
|
+
# @param input_source [Mindee::Input::Source::LocalInputSource, Mindee::Input::Source::URLInputSource]
|
149
|
+
# @param all_words [bool] Whether the full word extraction needs to be performed
|
150
|
+
# @param full_text [bool] Whether to include the full OCR text response in compatible APIs.
|
151
|
+
# @param close_file [bool] Whether the file will be closed after reading
|
152
|
+
# @param cropper [bool] Whether a cropping operation will be applied
|
145
153
|
# @return [Net::HTTPResponse, nil]
|
146
154
|
def document_queue_req_get(input_source, all_words, full_text, close_file, cropper)
|
147
155
|
uri = URI("#{@url_root}/predict_async")
|
148
156
|
|
149
|
-
params = {}
|
157
|
+
params = {} # : Hash[Symbol | String, untyped]
|
150
158
|
params[:cropper] = 'true' if cropper
|
151
159
|
params[:full_text_ocr] = 'true' if full_text
|
152
160
|
uri.query = URI.encode_www_form(params)
|
@@ -156,10 +164,10 @@ module Mindee
|
|
156
164
|
'User-Agent' => USER_AGENT,
|
157
165
|
}
|
158
166
|
req = Net::HTTP::Post.new(uri, headers)
|
159
|
-
form_data = if input_source.is_a?(Mindee::Input::Source::
|
167
|
+
form_data = if input_source.is_a?(Mindee::Input::Source::URLInputSource)
|
160
168
|
[['document', input_source.url]]
|
161
169
|
else
|
162
|
-
[input_source.
|
170
|
+
[input_source.read_contents(close: close_file)]
|
163
171
|
end
|
164
172
|
form_data.push ['include_mvision', 'true'] if all_words
|
165
173
|
|
@@ -201,9 +209,9 @@ module Mindee
|
|
201
209
|
def check_api_key
|
202
210
|
return unless @api_key.nil? || @api_key.empty?
|
203
211
|
|
204
|
-
raise
|
205
|
-
"
|
206
|
-
|
212
|
+
raise Errors::MindeeAPIError,
|
213
|
+
"Missing API key for product \"'#{@url_name}' v#{@version}\" (belonging to \"#{@owner}\"), " \
|
214
|
+
"check your Client Configuration.\nYou can set this using the " \
|
207
215
|
"'#{HTTP::API_KEY_ENV_NAME}' environment variable."
|
208
216
|
end
|
209
217
|
end
|
@@ -1,11 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'json'
|
4
|
+
require_relative '../errors/mindee_http_error'
|
4
5
|
|
5
6
|
module Mindee
|
6
7
|
module HTTP
|
7
8
|
# Mindee HTTP error module.
|
8
|
-
module
|
9
|
+
module ErrorHandler
|
9
10
|
module_function
|
10
11
|
|
11
12
|
# Extracts the HTTP error from the response hash, or the job error if there is one.
|
@@ -80,44 +81,13 @@ module Mindee
|
|
80
81
|
error_obj = create_error_obj(parsed_hash)
|
81
82
|
case code
|
82
83
|
when 400..499
|
83
|
-
|
84
|
+
Errors::MindeeHTTPClientError.new(error_obj, url, code)
|
84
85
|
when 500..599
|
85
|
-
|
86
|
+
Errors::MindeeHTTPServerError.new(error_obj, url, code)
|
86
87
|
else
|
87
|
-
|
88
|
+
Errors::MindeeHTTPError.new(error_obj, url, code)
|
88
89
|
end
|
89
90
|
end
|
90
|
-
|
91
|
-
# API HttpError
|
92
|
-
class MindeeHttpError < StandardError
|
93
|
-
# @return [String]
|
94
|
-
attr_reader :status_code
|
95
|
-
# @return [Integer]
|
96
|
-
attr_reader :api_code
|
97
|
-
# @return [String]
|
98
|
-
attr_reader :api_details
|
99
|
-
# @return [String]
|
100
|
-
attr_reader :api_message
|
101
|
-
|
102
|
-
# @param http_error [Hash]
|
103
|
-
# @param url [String]
|
104
|
-
# @param code [Integer]
|
105
|
-
def initialize(http_error, url, code)
|
106
|
-
@status_code = code
|
107
|
-
@api_code = http_error['code']
|
108
|
-
@api_details = http_error['details']
|
109
|
-
@api_message = http_error['message']
|
110
|
-
super("#{url} #{@status_code} HTTP error: #{@api_details} - #{@api_message}")
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
# API client HttpError
|
115
|
-
class MindeeHttpClientError < MindeeHttpError
|
116
|
-
end
|
117
|
-
|
118
|
-
# API server HttpError
|
119
|
-
class MindeeHttpServerError < MindeeHttpError
|
120
|
-
end
|
121
91
|
end
|
122
92
|
end
|
123
93
|
end
|
@@ -9,7 +9,7 @@ module Mindee
|
|
9
9
|
module ResponseValidation
|
10
10
|
# Checks if the synchronous response is valid. Returns True if the response is valid.
|
11
11
|
# @param [Net::HTTPResponse] response
|
12
|
-
# @return [
|
12
|
+
# @return [bool]
|
13
13
|
def self.valid_sync_response?(response)
|
14
14
|
return false unless (200..399).cover?(response.code.to_i)
|
15
15
|
|
@@ -24,7 +24,7 @@ module Mindee
|
|
24
24
|
# Checks if the asynchronous response is valid. Also checks if it is a valid synchronous response.
|
25
25
|
# Returns true if the response is valid.
|
26
26
|
# @param [Net::HTTPResponse] response
|
27
|
-
# @return [
|
27
|
+
# @return [bool]
|
28
28
|
def self.valid_async_response?(response)
|
29
29
|
return false unless valid_sync_response?(response)
|
30
30
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'json'
|
4
4
|
require 'net/http'
|
5
|
-
require_relative '
|
5
|
+
require_relative 'http_error_handler'
|
6
6
|
|
7
7
|
module Mindee
|
8
8
|
module HTTP
|
@@ -23,10 +23,10 @@ module Mindee
|
|
23
23
|
end
|
24
24
|
|
25
25
|
# Sends a document to the workflow.
|
26
|
-
# @param input_source [Mindee::Input::Source::LocalInputSource, Mindee::Input::Source::
|
26
|
+
# @param input_source [Mindee::Input::Source::LocalInputSource, Mindee::Input::Source::URLInputSource]
|
27
27
|
# @param document_alias [String, nil] Alias to give to the document.
|
28
28
|
# @param priority [Symbol, nil] Priority to give to the document.
|
29
|
-
# @param full_text [
|
29
|
+
# @param full_text [bool] Whether to include the full OCR text response in compatible APIs.
|
30
30
|
# @param public_url [String, nil] A unique, encrypted URL for accessing the document validation interface without
|
31
31
|
# requiring authentication.
|
32
32
|
# @return [Array]
|
@@ -37,20 +37,20 @@ module Mindee
|
|
37
37
|
return [hashed_response, response.body] if ResponseValidation.valid_async_response?(response)
|
38
38
|
|
39
39
|
ResponseValidation.clean_request!(response)
|
40
|
-
error =
|
40
|
+
error = Mindee::HTTP::ErrorHandler.handle_error(@url_name, response)
|
41
41
|
raise error
|
42
42
|
end
|
43
43
|
|
44
|
-
# @param input_source [Mindee::Input::Source::LocalInputSource, Mindee::Input::Source::
|
44
|
+
# @param input_source [Mindee::Input::Source::LocalInputSource, Mindee::Input::Source::URLInputSource]
|
45
45
|
# @param document_alias [String, nil] Alias to give to the document.
|
46
46
|
# @param priority [Symbol, nil] Priority to give to the document.
|
47
|
-
# @param full_text [
|
47
|
+
# @param full_text [bool] Whether to include the full OCR text response in compatible APIs.
|
48
48
|
# @param public_url [String, nil] A unique, encrypted URL for accessing the document validation interface without
|
49
49
|
# requiring authentication.
|
50
50
|
# @return [Net::HTTPResponse, nil]
|
51
51
|
def workflow_execution_req_post(input_source, document_alias, priority, full_text, public_url)
|
52
52
|
uri = URI(@url)
|
53
|
-
params = {}
|
53
|
+
params = {} # : Hash[Symbol | String, untyped]
|
54
54
|
params[:full_text_ocr] = 'true' if full_text
|
55
55
|
uri.query = URI.encode_www_form(params)
|
56
56
|
|
@@ -59,10 +59,10 @@ module Mindee
|
|
59
59
|
'User-Agent' => USER_AGENT,
|
60
60
|
}
|
61
61
|
req = Net::HTTP::Post.new(uri, headers)
|
62
|
-
form_data = if input_source.is_a?(Mindee::Input::Source::
|
62
|
+
form_data = if input_source.is_a?(Mindee::Input::Source::URLInputSource)
|
63
63
|
[['document', input_source.url]]
|
64
64
|
else
|
65
|
-
[input_source.
|
65
|
+
[input_source.read_contents]
|
66
66
|
end
|
67
67
|
form_data.push ['alias', document_alias] if document_alias
|
68
68
|
form_data.push ['public_url', public_url] if public_url
|
@@ -81,9 +81,9 @@ module Mindee
|
|
81
81
|
def check_api_key
|
82
82
|
return unless @api_key.nil? || @api_key.empty?
|
83
83
|
|
84
|
-
raise "Missing API key. Check your Client Configuration.\n" \
|
85
|
-
|
86
|
-
|
84
|
+
raise Errors::MindeeConfigurationError, "Missing API key. Check your Client Configuration.\n" \
|
85
|
+
"You can set this using the '#{HTTP::API_KEY_ENV_NAME}'" \
|
86
|
+
'environment variable.'
|
87
87
|
end
|
88
88
|
end
|
89
89
|
end
|
data/lib/mindee/http.rb
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative '
|
3
|
+
require_relative '../input/sources'
|
4
|
+
require_relative '../logging'
|
4
5
|
|
5
6
|
module Mindee
|
6
7
|
# Image Extraction Module.
|
7
|
-
module
|
8
|
+
module Image
|
8
9
|
# Generic class for image extraction.
|
9
10
|
class ExtractedImage
|
10
|
-
#
|
11
|
+
# ID of the page the image was extracted from.
|
11
12
|
attr_reader :page_id
|
12
13
|
|
13
|
-
#
|
14
|
+
# ID of the element on a given page.
|
14
15
|
attr_reader :element_id
|
15
16
|
|
16
17
|
# Buffer object of the file's content.
|
@@ -25,14 +26,15 @@ module Mindee
|
|
25
26
|
# @param page_id [Integer] ID of the page the element was found on.
|
26
27
|
# @param element_id [Integer, nil] ID of the element in a page.
|
27
28
|
def initialize(input_source, page_id, element_id)
|
28
|
-
@buffer = StringIO.new(input_source.io_stream.read)
|
29
|
+
@buffer = StringIO.new(input_source.io_stream.read.to_s)
|
29
30
|
@buffer.rewind
|
30
31
|
extension = if input_source.pdf?
|
31
|
-
'jpg'
|
32
|
+
'.jpg'
|
32
33
|
else
|
33
34
|
File.extname(input_source.filename)
|
34
35
|
end
|
35
|
-
|
36
|
+
base_name = File.basename(input_source.filename, File.extname(input_source.filename))
|
37
|
+
@internal_file_name = "#{base_name}_p#{page_id}_#{element_id}#{extension}"
|
36
38
|
@page_id = page_id
|
37
39
|
@element_id = element_id.nil? ? 0 : element_id
|
38
40
|
end
|
@@ -43,21 +45,23 @@ module Mindee
|
|
43
45
|
# @param file_format [String, nil] Optional MiniMagick-compatible format for the file. Inferred from file
|
44
46
|
# extension if not provided.
|
45
47
|
# @raise [MindeeError] If an invalid path or filename is provided.
|
46
|
-
def
|
47
|
-
resolved_path = Pathname.new(output_path)
|
48
|
+
def write_to_file(output_path, file_format = nil)
|
49
|
+
resolved_path = Pathname.new(File.expand_path(output_path))
|
48
50
|
if file_format.nil?
|
49
|
-
raise
|
51
|
+
raise Errors::MindeeImageError, 'Invalid file format.' if resolved_path.extname.delete('.').empty?
|
50
52
|
|
51
53
|
file_format = resolved_path.extname.delete('.').upcase
|
52
54
|
end
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
55
|
+
begin
|
56
|
+
@buffer.rewind
|
57
|
+
image = MiniMagick::Image.read(@buffer)
|
58
|
+
image.format file_format.to_s.downcase
|
59
|
+
image.write resolved_path.to_s
|
60
|
+
logger.info("File saved successfully to '#{resolved_path}'")
|
61
|
+
rescue StandardError
|
62
|
+
raise Errors::MindeeImageError, "Could not save file '#{output_path}'. " \
|
63
|
+
'Is the provided file path valid?.'
|
64
|
+
end
|
61
65
|
end
|
62
66
|
|
63
67
|
# Return the file as a Mindee-compatible BufferInput source.
|