mindee 4.6.0 → 4.7.0.pre.rc1
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/CHANGELOG.md +12 -0
- data/README.md +21 -222
- data/docs/code_samples/default_v2.txt +28 -0
- data/lib/mindee/client.rb +11 -30
- data/lib/mindee/client_v2.rb +109 -0
- data/lib/mindee/errors/mindee_http_error_v2.rb +26 -0
- data/lib/mindee/errors.rb +1 -0
- data/lib/mindee/geometry/point.rb +2 -2
- data/lib/mindee/geometry/quadrilateral.rb +4 -4
- data/lib/mindee/geometry/utils.rb +1 -0
- data/lib/mindee/http/api_settings_v2.rb +61 -0
- data/lib/mindee/http/endpoint.rb +12 -6
- data/lib/mindee/http/http_error_handler.rb +17 -4
- data/lib/mindee/http/mindee_api_v2.rb +148 -0
- data/lib/mindee/http/response_validation.rb +20 -1
- data/lib/mindee/http/workflow_endpoint.rb +2 -2
- data/lib/mindee/http.rb +2 -0
- data/lib/mindee/image/extracted_image.rb +1 -1
- data/lib/mindee/image/image_extractor.rb +10 -10
- data/lib/mindee/input/inference_parameters.rb +116 -0
- data/lib/mindee/input/local_response.rb +10 -1
- data/lib/mindee/input/polling_options.rb +26 -0
- data/lib/mindee/input/sources/base64_input_source.rb +2 -2
- data/lib/mindee/input/sources/local_input_source.rb +19 -12
- data/lib/mindee/input.rb +2 -0
- data/lib/mindee/page_options.rb +24 -0
- data/lib/mindee/parsing/common/api_request.rb +2 -2
- data/lib/mindee/parsing/common/api_response.rb +4 -0
- data/lib/mindee/parsing/common/execution.rb +1 -1
- data/lib/mindee/parsing/common/extras/extras.rb +2 -2
- data/lib/mindee/parsing/common/extras/rag_extra.rb +2 -0
- data/lib/mindee/parsing/common/ocr/ocr.rb +4 -6
- data/lib/mindee/parsing/common/orientation.rb +2 -2
- data/lib/mindee/parsing/common/product.rb +6 -1
- data/lib/mindee/parsing/standard/amount_field.rb +2 -2
- data/lib/mindee/parsing/standard/feature_field.rb +1 -1
- data/lib/mindee/parsing/standard/tax_field.rb +1 -1
- data/lib/mindee/parsing/universal/universal_list_field.rb +2 -2
- data/lib/mindee/parsing/universal/universal_object_field.rb +6 -3
- data/lib/mindee/parsing/v2/common_response.rb +18 -0
- data/lib/mindee/parsing/v2/error_response.rb +36 -0
- data/lib/mindee/parsing/v2/field/base_field.rb +60 -0
- data/lib/mindee/parsing/v2/field/field_confidence.rb +91 -0
- data/lib/mindee/parsing/v2/field/field_location.rb +36 -0
- data/lib/mindee/parsing/v2/field/inference_fields.rb +96 -0
- data/lib/mindee/parsing/v2/field/list_field.rb +88 -0
- data/lib/mindee/parsing/v2/field/object_field.rb +102 -0
- data/lib/mindee/parsing/v2/field/simple_field.rb +56 -0
- data/lib/mindee/parsing/v2/field.rb +9 -0
- data/lib/mindee/parsing/v2/inference.rb +50 -0
- data/lib/mindee/parsing/v2/inference_file.rb +38 -0
- data/lib/mindee/parsing/v2/inference_model.rb +18 -0
- data/lib/mindee/parsing/v2/inference_response.rb +30 -0
- data/lib/mindee/parsing/v2/inference_result.rb +49 -0
- data/lib/mindee/parsing/v2/inference_result_options.rb +21 -0
- data/lib/mindee/parsing/v2/job.rb +86 -0
- data/lib/mindee/parsing/v2/job_response.rb +30 -0
- data/lib/mindee/parsing/v2/job_webhook.rb +60 -0
- data/lib/mindee/parsing/v2/raw_text.rb +21 -0
- data/lib/mindee/parsing/v2.rb +15 -0
- data/lib/mindee/pdf/extracted_pdf.rb +5 -3
- data/lib/mindee/pdf/pdf_extractor.rb +11 -7
- data/lib/mindee/pdf/pdf_processor.rb +6 -6
- data/lib/mindee/pdf/pdf_tools.rb +4 -2
- data/lib/mindee/product/universal/universal_prediction.rb +4 -4
- data/lib/mindee/version.rb +2 -2
- data/lib/mindee.rb +6 -0
- data/mindee.gemspec +1 -1
- data/sig/custom/mini_magick.rbs +14 -7
- data/sig/custom/net_http.rbs +4 -4
- data/sig/custom/origami.rbs +9 -4
- data/sig/mindee/client.rbs +14 -19
- data/sig/mindee/client_v2.rbs +17 -0
- data/sig/mindee/errors/mindee_http_error.rbs +6 -5
- data/sig/mindee/errors/mindee_http_error_v2.rbs +12 -0
- data/sig/mindee/errors/mindee_input_error.rbs +3 -2
- data/sig/mindee/geometry/min_max.rbs +4 -3
- data/sig/mindee/geometry/point.rbs +5 -6
- data/sig/mindee/geometry/polygon.rbs +3 -3
- data/sig/mindee/geometry/quadrilateral.rbs +5 -8
- data/sig/mindee/geometry/utils.rbs +8 -8
- data/sig/mindee/http/api_settings_v2.rbs +23 -0
- data/sig/mindee/http/endpoint.rbs +12 -11
- data/sig/mindee/http/http_error_handler.rbs +8 -3
- data/sig/mindee/http/mindee_api_v2.rbs +18 -0
- data/sig/mindee/http/response_validation.rbs +1 -0
- data/sig/mindee/http/workflow_endpoint.rbs +1 -1
- data/sig/mindee/image/extracted_image.rbs +2 -2
- data/sig/mindee/image/image_compressor.rbs +1 -1
- data/sig/mindee/image/image_extractor.rbs +5 -5
- data/sig/mindee/image/image_utils.rbs +10 -10
- data/sig/mindee/input/inference_parameters.rbs +30 -0
- data/sig/mindee/input/local_response.rbs +6 -5
- data/sig/mindee/input/polling_options.rbs +12 -0
- data/sig/mindee/input/sources/base64_input_source.rbs +1 -1
- data/sig/mindee/input/sources/local_input_source.rbs +10 -7
- data/sig/mindee/input/sources/url_input_source.rbs +1 -1
- data/sig/mindee/logging/logger.rbs +2 -0
- data/sig/mindee/page_options.rbs +11 -0
- data/sig/mindee/parsing/common/api_request.rbs +6 -6
- data/sig/mindee/parsing/common/api_response.rbs +2 -2
- data/sig/mindee/parsing/common/document.rbs +10 -10
- data/sig/mindee/parsing/common/execution.rbs +15 -14
- data/sig/mindee/parsing/common/execution_file.rbs +3 -3
- data/sig/mindee/parsing/common/extras/cropper_extra.rbs +3 -2
- data/sig/mindee/parsing/common/extras/extras.rbs +6 -5
- data/sig/mindee/parsing/common/extras/full_text_ocr_extra.rbs +2 -1
- data/sig/mindee/parsing/common/inference.rbs +16 -9
- data/sig/mindee/parsing/common/job.rbs +2 -2
- data/sig/mindee/parsing/common/ocr/mvision_v1.rbs +2 -2
- data/sig/mindee/parsing/common/ocr/ocr.rbs +22 -20
- data/sig/mindee/parsing/common/orientation.rbs +4 -3
- data/sig/mindee/parsing/common/page.rbs +6 -5
- data/sig/mindee/parsing/common/product.rbs +4 -4
- data/sig/mindee/parsing/common/workflow_response.rbs +8 -4
- data/sig/mindee/parsing/standard/abstract_field.rbs +1 -1
- data/sig/mindee/parsing/standard/address_field.rbs +1 -1
- data/sig/mindee/parsing/standard/amount_field.rbs +6 -4
- data/sig/mindee/parsing/standard/base_field.rbs +1 -1
- data/sig/mindee/parsing/standard/boolean_field.rbs +1 -1
- data/sig/mindee/parsing/standard/company_registration_field.rbs +3 -2
- data/sig/mindee/parsing/standard/date_field.rbs +6 -6
- data/sig/mindee/parsing/standard/locale_field.rbs +1 -1
- data/sig/mindee/parsing/standard/payment_details_field.rbs +7 -6
- data/sig/mindee/parsing/standard/position_field.rbs +2 -2
- data/sig/mindee/parsing/standard/string_field.rbs +1 -1
- data/sig/mindee/parsing/standard/tax_field.rbs +8 -7
- data/sig/mindee/parsing/universal/universal_list_field.rbs +4 -5
- data/sig/mindee/parsing/universal/universal_object_field.rbs +17 -11
- data/sig/mindee/parsing/v2/common_response.rbs +11 -0
- data/sig/mindee/parsing/v2/error_response.rbs +16 -0
- data/sig/mindee/parsing/v2/field/base_field.rbs +17 -0
- data/sig/mindee/parsing/v2/field/field_confidence.rbs +27 -0
- data/sig/mindee/parsing/v2/field/field_location.rbs +16 -0
- data/sig/mindee/parsing/v2/field/inference_fields.rbs +19 -0
- data/sig/mindee/parsing/v2/field/list_field.rbs +22 -0
- data/sig/mindee/parsing/v2/field/object_field.rbs +21 -0
- data/sig/mindee/parsing/v2/field/simple_field.rbs +16 -0
- data/sig/mindee/parsing/v2/inference.rbs +16 -0
- data/sig/mindee/parsing/v2/inference_file.rbs +15 -0
- data/sig/mindee/parsing/v2/inference_model.rbs +11 -0
- data/sig/mindee/parsing/v2/inference_response.rbs +12 -0
- data/sig/mindee/parsing/v2/inference_result.rbs +13 -0
- data/sig/mindee/parsing/v2/inference_result_options.rbs +11 -0
- data/sig/mindee/parsing/v2/job.rbs +22 -0
- data/sig/mindee/parsing/v2/job_response.rbs +12 -0
- data/sig/mindee/parsing/v2/job_webhook.rbs +17 -0
- data/sig/mindee/parsing/v2/raw_text.rbs +12 -0
- data/sig/mindee/pdf/extracted_pdf.rbs +6 -6
- data/sig/mindee/pdf/pdf_compressor.rbs +4 -4
- data/sig/mindee/pdf/pdf_extractor.rbs +8 -7
- data/sig/mindee/pdf/pdf_processor.rbs +4 -4
- data/sig/mindee/pdf/pdf_tools.rbs +22 -16
- data/sig/mindee/product/barcode_reader/barcode_reader_v1.rbs +1 -1
- data/sig/mindee/product/barcode_reader/barcode_reader_v1_document.rbs +1 -1
- data/sig/mindee/product/barcode_reader/barcode_reader_v1_page.rbs +2 -2
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1.rbs +1 -1
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_carrier.rbs +2 -2
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_carrier_item.rbs +3 -3
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_consignee.rbs +2 -2
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_document.rbs +1 -1
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_notify_party.rbs +2 -2
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_page.rbs +2 -2
- data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_shipper.rbs +2 -2
- data/sig/mindee/product/business_card/business_card_v1.rbs +1 -1
- data/sig/mindee/product/business_card/business_card_v1_document.rbs +1 -1
- data/sig/mindee/product/business_card/business_card_v1_page.rbs +2 -2
- data/sig/mindee/product/cropper/cropper_v1.rbs +1 -1
- data/sig/mindee/product/cropper/cropper_v1_document.rbs +1 -1
- data/sig/mindee/product/cropper/cropper_v1_page.rbs +2 -2
- data/sig/mindee/product/delivery_note/delivery_note_v1.rbs +1 -1
- data/sig/mindee/product/delivery_note/delivery_note_v1_document.rbs +1 -1
- data/sig/mindee/product/delivery_note/delivery_note_v1_page.rbs +2 -2
- data/sig/mindee/product/driver_license/driver_license_v1.rbs +1 -1
- data/sig/mindee/product/driver_license/driver_license_v1_document.rbs +1 -1
- data/sig/mindee/product/driver_license/driver_license_v1_page.rbs +2 -2
- data/sig/mindee/product/financial_document/financial_document_v1.rbs +1 -1
- data/sig/mindee/product/financial_document/financial_document_v1_document.rbs +1 -1
- data/sig/mindee/product/financial_document/financial_document_v1_line_item.rbs +3 -3
- data/sig/mindee/product/financial_document/financial_document_v1_page.rbs +2 -2
- data/sig/mindee/product/fr/bank_account_details/bank_account_details_v1.rbs +1 -1
- data/sig/mindee/product/fr/bank_account_details/bank_account_details_v1_document.rbs +1 -1
- data/sig/mindee/product/fr/bank_account_details/bank_account_details_v1_page.rbs +2 -2
- data/sig/mindee/product/fr/bank_account_details/bank_account_details_v2.rbs +1 -1
- data/sig/mindee/product/fr/bank_account_details/bank_account_details_v2_bban.rbs +2 -2
- data/sig/mindee/product/fr/bank_account_details/bank_account_details_v2_document.rbs +1 -1
- data/sig/mindee/product/fr/bank_account_details/bank_account_details_v2_page.rbs +2 -2
- data/sig/mindee/product/fr/bank_statement/bank_statement_v2.rbs +1 -1
- data/sig/mindee/product/fr/bank_statement/bank_statement_v2_document.rbs +1 -1
- data/sig/mindee/product/fr/bank_statement/bank_statement_v2_page.rbs +2 -2
- data/sig/mindee/product/fr/bank_statement/bank_statement_v2_transaction.rbs +3 -3
- data/sig/mindee/product/fr/carte_grise/carte_grise_v1.rbs +1 -1
- data/sig/mindee/product/fr/carte_grise/carte_grise_v1_document.rbs +1 -1
- data/sig/mindee/product/fr/carte_grise/carte_grise_v1_page.rbs +2 -2
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1.rbs +1 -1
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_document.rbs +1 -1
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_energy_consumer.rbs +2 -2
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_energy_supplier.rbs +2 -2
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_energy_usage.rbs +3 -3
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_meter_detail.rbs +2 -2
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_page.rbs +2 -2
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_subscription.rbs +3 -3
- data/sig/mindee/product/fr/energy_bill/energy_bill_v1_taxes_and_contribution.rbs +3 -3
- data/sig/mindee/product/fr/health_card/health_card_v1.rbs +1 -1
- data/sig/mindee/product/fr/health_card/health_card_v1_document.rbs +1 -1
- data/sig/mindee/product/fr/health_card/health_card_v1_page.rbs +2 -2
- data/sig/mindee/product/fr/id_card/id_card_v1.rbs +1 -1
- data/sig/mindee/product/fr/id_card/id_card_v1_document.rbs +1 -1
- data/sig/mindee/product/fr/id_card/id_card_v1_page.rbs +2 -2
- data/sig/mindee/product/fr/id_card/id_card_v2.rbs +1 -1
- data/sig/mindee/product/fr/id_card/id_card_v2_document.rbs +1 -1
- data/sig/mindee/product/fr/id_card/id_card_v2_page.rbs +2 -2
- data/sig/mindee/product/fr/payslip/payslip_v2.rbs +1 -1
- data/sig/mindee/product/fr/payslip/payslip_v2_bank_account_detail.rbs +2 -2
- data/sig/mindee/product/fr/payslip/payslip_v2_document.rbs +1 -1
- data/sig/mindee/product/fr/payslip/payslip_v2_employee.rbs +2 -2
- data/sig/mindee/product/fr/payslip/payslip_v2_employer.rbs +2 -2
- data/sig/mindee/product/fr/payslip/payslip_v2_employment.rbs +2 -2
- data/sig/mindee/product/fr/payslip/payslip_v2_page.rbs +2 -2
- data/sig/mindee/product/fr/payslip/payslip_v2_pay_detail.rbs +2 -2
- data/sig/mindee/product/fr/payslip/payslip_v2_pay_period.rbs +2 -2
- data/sig/mindee/product/fr/payslip/payslip_v2_pto.rbs +2 -2
- data/sig/mindee/product/fr/payslip/payslip_v2_salary_detail.rbs +3 -3
- data/sig/mindee/product/fr/payslip/payslip_v3.rbs +1 -1
- data/sig/mindee/product/fr/payslip/payslip_v3_bank_account_detail.rbs +2 -2
- data/sig/mindee/product/fr/payslip/payslip_v3_document.rbs +1 -1
- data/sig/mindee/product/fr/payslip/payslip_v3_employee.rbs +2 -2
- data/sig/mindee/product/fr/payslip/payslip_v3_employer.rbs +2 -2
- data/sig/mindee/product/fr/payslip/payslip_v3_employment.rbs +2 -2
- data/sig/mindee/product/fr/payslip/payslip_v3_page.rbs +2 -2
- data/sig/mindee/product/fr/payslip/payslip_v3_paid_time_off.rbs +3 -3
- data/sig/mindee/product/fr/payslip/payslip_v3_pay_detail.rbs +2 -2
- data/sig/mindee/product/fr/payslip/payslip_v3_pay_period.rbs +2 -2
- data/sig/mindee/product/fr/payslip/payslip_v3_salary_detail.rbs +3 -3
- data/sig/mindee/product/ind/indian_passport/indian_passport_v1.rbs +1 -1
- data/sig/mindee/product/ind/indian_passport/indian_passport_v1_document.rbs +1 -1
- data/sig/mindee/product/ind/indian_passport/indian_passport_v1_page.rbs +2 -2
- data/sig/mindee/product/international_id/international_id_v2.rbs +1 -1
- data/sig/mindee/product/international_id/international_id_v2_document.rbs +1 -1
- data/sig/mindee/product/international_id/international_id_v2_page.rbs +2 -2
- data/sig/mindee/product/invoice/invoice_v4.rbs +1 -1
- data/sig/mindee/product/invoice/invoice_v4_document.rbs +1 -1
- data/sig/mindee/product/invoice/invoice_v4_line_item.rbs +3 -3
- data/sig/mindee/product/invoice/invoice_v4_page.rbs +2 -2
- data/sig/mindee/product/invoice_splitter/invoice_splitter_v1.rbs +1 -1
- data/sig/mindee/product/invoice_splitter/invoice_splitter_v1_document.rbs +1 -1
- data/sig/mindee/product/invoice_splitter/invoice_splitter_v1_invoice_page_group.rbs +3 -3
- data/sig/mindee/product/invoice_splitter/invoice_splitter_v1_page.rbs +2 -2
- data/sig/mindee/product/multi_receipts_detector/multi_receipts_detector_v1.rbs +1 -1
- data/sig/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_document.rbs +1 -1
- data/sig/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_page.rbs +2 -2
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1.rbs +1 -1
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_added_sugar.rbs +2 -2
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_calorie.rbs +2 -2
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_cholesterol.rbs +2 -2
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_dietary_fiber.rbs +2 -2
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_document.rbs +1 -1
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_nutrient.rbs +3 -3
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_page.rbs +2 -2
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_protein.rbs +2 -2
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_saturated_fat.rbs +2 -2
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_serving_size.rbs +2 -2
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_sodium.rbs +2 -2
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_total_carbohydrate.rbs +2 -2
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_total_fat.rbs +2 -2
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_total_sugar.rbs +2 -2
- data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_trans_fat.rbs +2 -2
- data/sig/mindee/product/passport/passport_v1.rbs +1 -1
- data/sig/mindee/product/passport/passport_v1_document.rbs +1 -1
- data/sig/mindee/product/passport/passport_v1_page.rbs +2 -2
- data/sig/mindee/product/receipt/receipt_v5.rbs +1 -1
- data/sig/mindee/product/receipt/receipt_v5_document.rbs +1 -1
- data/sig/mindee/product/receipt/receipt_v5_line_item.rbs +3 -3
- data/sig/mindee/product/receipt/receipt_v5_page.rbs +2 -2
- data/sig/mindee/product/resume/resume_v1.rbs +1 -1
- data/sig/mindee/product/resume/resume_v1_certificate.rbs +3 -3
- data/sig/mindee/product/resume/resume_v1_document.rbs +1 -1
- data/sig/mindee/product/resume/resume_v1_education.rbs +3 -3
- data/sig/mindee/product/resume/resume_v1_language.rbs +3 -3
- data/sig/mindee/product/resume/resume_v1_page.rbs +2 -2
- data/sig/mindee/product/resume/resume_v1_professional_experience.rbs +3 -3
- data/sig/mindee/product/resume/resume_v1_social_networks_url.rbs +3 -3
- data/sig/mindee/product/universal/universal.rbs +5 -5
- data/sig/mindee/product/universal/universal_document.rbs +1 -1
- data/sig/mindee/product/universal/universal_page.rbs +2 -2
- data/sig/mindee/product/universal/universal_prediction.rbs +5 -5
- data/sig/mindee/product/us/bank_check/bank_check_v1.rbs +1 -1
- data/sig/mindee/product/us/bank_check/bank_check_v1_document.rbs +1 -1
- data/sig/mindee/product/us/bank_check/bank_check_v1_page.rbs +2 -2
- data/sig/mindee/product/us/healthcare_card/healthcare_card_v1.rbs +1 -1
- data/sig/mindee/product/us/healthcare_card/healthcare_card_v1_copay.rbs +3 -3
- data/sig/mindee/product/us/healthcare_card/healthcare_card_v1_document.rbs +1 -1
- data/sig/mindee/product/us/healthcare_card/healthcare_card_v1_page.rbs +2 -2
- data/sig/mindee/product/us/us_mail/us_mail_v2.rbs +1 -1
- data/sig/mindee/product/us/us_mail/us_mail_v2_document.rbs +1 -1
- data/sig/mindee/product/us/us_mail/us_mail_v2_page.rbs +2 -2
- data/sig/mindee/product/us/us_mail/us_mail_v2_recipient_address.rbs +3 -3
- data/sig/mindee/product/us/us_mail/us_mail_v2_sender_address.rbs +2 -2
- data/sig/mindee/product/us/us_mail/us_mail_v3.rbs +1 -1
- data/sig/mindee/product/us/us_mail/us_mail_v3_document.rbs +1 -1
- data/sig/mindee/product/us/us_mail/us_mail_v3_page.rbs +2 -2
- data/sig/mindee/product/us/us_mail/us_mail_v3_recipient_address.rbs +3 -3
- data/sig/mindee/product/us/us_mail/us_mail_v3_sender_address.rbs +2 -2
- data/sig/mindee/product/us/w9/w9_v1.rbs +1 -1
- data/sig/mindee/product/us/w9/w9_v1_document.rbs +1 -1
- data/sig/mindee/product/us/w9/w9_v1_page.rbs +2 -2
- data/sig/mindee/version.rbs +2 -2
- metadata +61 -6
@@ -0,0 +1,102 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base_field'
|
4
|
+
require_relative 'inference_fields'
|
5
|
+
|
6
|
+
module Mindee
|
7
|
+
module Parsing
|
8
|
+
module V2
|
9
|
+
module Field
|
10
|
+
# A field containing a nested set of inference fields.
|
11
|
+
class ObjectField < BaseField
|
12
|
+
# @return [InferenceFields] Fields contained in the object.
|
13
|
+
attr_reader :fields
|
14
|
+
|
15
|
+
# @param raw_prediction [Hash] Raw server response hash.
|
16
|
+
# @param indent_level [Integer] Level of indentation for rst display.
|
17
|
+
def initialize(raw_prediction, indent_level = 0)
|
18
|
+
super
|
19
|
+
|
20
|
+
inner_fields = raw_prediction.fetch('fields', raw_prediction)
|
21
|
+
@fields = InferenceFields.new(inner_fields, @indent_level + 1)
|
22
|
+
end
|
23
|
+
|
24
|
+
# String representation of the object field.
|
25
|
+
# @return [String] String representation with newline prefix.
|
26
|
+
def to_s
|
27
|
+
return "\n" unless @fields && !@fields.empty?
|
28
|
+
|
29
|
+
"\n#{@fields.to_s(1)}"
|
30
|
+
end
|
31
|
+
|
32
|
+
# String representation suitable for list display.
|
33
|
+
# @return [String] String representation without leading spaces.
|
34
|
+
def to_s_from_list
|
35
|
+
return '' if @fields.nil?
|
36
|
+
return '' unless @fields && !@fields.empty?
|
37
|
+
|
38
|
+
field_str = @fields.to_s(2)
|
39
|
+
field_str.length > 4 ? (field_str[4..] || '') : ''
|
40
|
+
end
|
41
|
+
|
42
|
+
# String representation of a single object field
|
43
|
+
# @return [String] Multi-line string with proper indentation.
|
44
|
+
def single_str
|
45
|
+
return '' unless @fields && !@fields.empty?
|
46
|
+
|
47
|
+
out_str = ''
|
48
|
+
indent = ' ' * @indent_level
|
49
|
+
|
50
|
+
@fields.each do |field_key, field_value|
|
51
|
+
value_str = field_value && !field_value.to_s.empty? ? field_value.to_s : ''
|
52
|
+
out_str += "\n#{indent} :#{field_key}: #{value_str}"
|
53
|
+
end
|
54
|
+
|
55
|
+
out_str
|
56
|
+
end
|
57
|
+
|
58
|
+
# String representation for multi-object display
|
59
|
+
# @return [String] Formatted string for list context.
|
60
|
+
def multi_str
|
61
|
+
return '' unless @fields && !@fields.empty?
|
62
|
+
|
63
|
+
out_str = ''
|
64
|
+
indent = ' ' * @indent_level
|
65
|
+
first = true
|
66
|
+
|
67
|
+
@fields.each do |field_key, field_value|
|
68
|
+
value_str = field_value ? field_value.to_s : ''
|
69
|
+
|
70
|
+
if first
|
71
|
+
out_str += "#{indent}:#{field_key}: #{value_str}"
|
72
|
+
first = false
|
73
|
+
else
|
74
|
+
out_str += "\n#{indent} :#{field_key}: #{value_str}"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
out_str
|
79
|
+
end
|
80
|
+
|
81
|
+
# Allow dot notation access to nested fields.
|
82
|
+
# @param method_name [Symbol] The method name (field key).
|
83
|
+
# @return [ObjectField, nil] The field or nil if not found.
|
84
|
+
def method_missing(method_name, ...)
|
85
|
+
if @fields.respond_to?(method_name)
|
86
|
+
@fields.send(method_name, ...)
|
87
|
+
else
|
88
|
+
super
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
# Check if method_missing should handle the method.
|
93
|
+
# @param method_name [Symbol] The method name.
|
94
|
+
# @return [Boolean] True if the method should be handled.
|
95
|
+
def respond_to_missing?(method_name, include_private = false)
|
96
|
+
@fields.respond_to?(method_name) || super
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base_field'
|
4
|
+
|
5
|
+
module Mindee
|
6
|
+
module Parsing
|
7
|
+
module V2
|
8
|
+
module Field
|
9
|
+
# A simple field with a scalar value.
|
10
|
+
class SimpleField < BaseField
|
11
|
+
# @return [String, Integer, Float, Boolean, nil] Value contained in the field.
|
12
|
+
attr_reader :value
|
13
|
+
|
14
|
+
# @param server_response [Hash] Raw server response hash.
|
15
|
+
# @param indent_level [Integer] Level of indentation for rst display.
|
16
|
+
def initialize(server_response, indent_level = 0)
|
17
|
+
super
|
18
|
+
@value = server_response.key?('value') ? server_response['value'] : nil
|
19
|
+
end
|
20
|
+
|
21
|
+
# String representation of the field value.
|
22
|
+
# @return [String] String representation of the value.
|
23
|
+
def to_s
|
24
|
+
return '' if @value.nil?
|
25
|
+
|
26
|
+
if @value.is_a?(TrueClass) || @value.is_a?(FalseClass)
|
27
|
+
@value ? 'True' : 'False'
|
28
|
+
elsif @value.is_a?(Integer) || @value.is_a?(Float)
|
29
|
+
# NOTE: explicitly typing because steep is very, very dumb
|
30
|
+
num = @value # @type var num: Integer | Float
|
31
|
+
format_numeric_value(num)
|
32
|
+
else
|
33
|
+
@value.to_s
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
# Format numeric values to display '.0' in string reps.
|
40
|
+
# @param value [Numeric] The numeric value to format.
|
41
|
+
# @return [String] Formatted numeric string.
|
42
|
+
def format_numeric_value(value)
|
43
|
+
float_value = value.to_f
|
44
|
+
|
45
|
+
if float_value == float_value.to_i
|
46
|
+
format('%.1f', float_value)
|
47
|
+
else
|
48
|
+
formatted = format('%.5f', float_value)
|
49
|
+
formatted.sub(%r{\.?0+$}, '')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'field/base_field'
|
4
|
+
require_relative 'field/field_confidence'
|
5
|
+
require_relative 'field/field_location'
|
6
|
+
require_relative 'field/inference_fields'
|
7
|
+
require_relative 'field/list_field'
|
8
|
+
require_relative 'field/object_field'
|
9
|
+
require_relative 'field/simple_field'
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'inference_model'
|
4
|
+
require_relative 'inference_file'
|
5
|
+
require_relative 'inference_result'
|
6
|
+
|
7
|
+
module Mindee
|
8
|
+
module Parsing
|
9
|
+
module V2
|
10
|
+
# Complete data returned by an inference request.
|
11
|
+
class Inference
|
12
|
+
# @return [InferenceModel] Information about the model used.
|
13
|
+
attr_reader :model
|
14
|
+
# @return [InferenceFile] Information about the processed file.
|
15
|
+
attr_reader :file
|
16
|
+
# @return [InferenceResult] Result contents.
|
17
|
+
attr_reader :result
|
18
|
+
# @return [String] Identifier of the inference (when provided by API).
|
19
|
+
attr_reader :id
|
20
|
+
|
21
|
+
# @param server_response [Hash] Hash representation of the JSON returned by the service.
|
22
|
+
def initialize(server_response)
|
23
|
+
raise ArgumentError, 'server_response must be a Hash' unless server_response.is_a?(Hash)
|
24
|
+
|
25
|
+
@model = InferenceModel.new(server_response['model'])
|
26
|
+
@file = InferenceFile.new(server_response['file'])
|
27
|
+
@result = InferenceResult.new(server_response['result'])
|
28
|
+
|
29
|
+
@id = server_response['id']
|
30
|
+
end
|
31
|
+
|
32
|
+
# String representation.
|
33
|
+
# @return [String]
|
34
|
+
def to_s
|
35
|
+
[
|
36
|
+
'Inference',
|
37
|
+
'#########',
|
38
|
+
'Model',
|
39
|
+
'=====',
|
40
|
+
":ID: #{@model.id}",
|
41
|
+
'',
|
42
|
+
@file.to_s,
|
43
|
+
@result.to_s,
|
44
|
+
'',
|
45
|
+
].join("\n")
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mindee
|
4
|
+
module Parsing
|
5
|
+
module V2
|
6
|
+
# Information about a file returned in an inference.
|
7
|
+
class InferenceFile
|
8
|
+
# @return [String] File name.
|
9
|
+
attr_reader :name
|
10
|
+
# @return [String, nil] Optional alias for the file.
|
11
|
+
attr_reader :file_alias
|
12
|
+
# @return [Integer] Page count.
|
13
|
+
attr_reader :page_count
|
14
|
+
# @return [String] MIME type.
|
15
|
+
attr_reader :mime_type
|
16
|
+
|
17
|
+
# @param server_response [Hash] Raw JSON parsed into a Hash.
|
18
|
+
def initialize(server_response)
|
19
|
+
@name = server_response['name']
|
20
|
+
@file_alias = server_response['alias']
|
21
|
+
@page_count = server_response['page_count']
|
22
|
+
@mime_type = server_response['mime_type']
|
23
|
+
end
|
24
|
+
|
25
|
+
# String representation.
|
26
|
+
# @return [String]
|
27
|
+
def to_s
|
28
|
+
"File\n" \
|
29
|
+
"====\n" \
|
30
|
+
":Name: #{@name}\n" \
|
31
|
+
":Alias:#{" #{@file_alias}" if @file_alias}\n" \
|
32
|
+
":Page Count: #{@page_count}\n" \
|
33
|
+
":MIME Type: #{@mime_type}\n"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mindee
|
4
|
+
module Parsing
|
5
|
+
module V2
|
6
|
+
# ID of the model that produced the inference.
|
7
|
+
class InferenceModel
|
8
|
+
# @return [String] Identifier of the model.
|
9
|
+
attr_reader :id
|
10
|
+
|
11
|
+
# @param server_response [Hash] Raw JSON parsed into a Hash.
|
12
|
+
def initialize(server_response)
|
13
|
+
@id = server_response['id']
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'common_response'
|
4
|
+
require_relative 'inference'
|
5
|
+
|
6
|
+
module Mindee
|
7
|
+
module Parsing
|
8
|
+
module V2
|
9
|
+
# HTTP response wrapper that embeds a V2 Inference.
|
10
|
+
class InferenceResponse < CommonResponse
|
11
|
+
# @return [Inference] Parsed inference payload.
|
12
|
+
attr_reader :inference
|
13
|
+
|
14
|
+
# @param server_response [Hash] Hash parsed from the API JSON response.
|
15
|
+
def initialize(server_response)
|
16
|
+
# CommonResponse takes care of the generic metadata (status, etc.)
|
17
|
+
super
|
18
|
+
|
19
|
+
@inference = Inference.new(server_response['inference'])
|
20
|
+
end
|
21
|
+
|
22
|
+
# String representation.
|
23
|
+
# @return [String]
|
24
|
+
def to_s
|
25
|
+
@inference.to_s
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'field/inference_fields'
|
4
|
+
require_relative 'inference_result_options'
|
5
|
+
|
6
|
+
module Mindee
|
7
|
+
module Parsing
|
8
|
+
module V2
|
9
|
+
# Wrapper for the result of a V2 inference request.
|
10
|
+
class InferenceResult
|
11
|
+
# @return [Mindee::Parsing::V2::Field::InferenceFields] Fields produced by the model.
|
12
|
+
attr_reader :fields
|
13
|
+
# @return [Mindee::Parsing::V2::InferenceResultOptions, nil] Optional extra data.
|
14
|
+
attr_reader :options
|
15
|
+
|
16
|
+
# @param server_response [Hash] Hash version of the JSON returned by the API.
|
17
|
+
def initialize(server_response)
|
18
|
+
raise ArgumentError, 'server_response must be a Hash' unless server_response.is_a?(Hash)
|
19
|
+
|
20
|
+
@fields = Field::InferenceFields.new(server_response['fields'])
|
21
|
+
|
22
|
+
return unless server_response.key?('options') && server_response['options']
|
23
|
+
|
24
|
+
@options = InferenceResultOptions.new(server_response['options'])
|
25
|
+
end
|
26
|
+
|
27
|
+
# String representation.
|
28
|
+
# @return [String]
|
29
|
+
def to_s
|
30
|
+
parts = [
|
31
|
+
'Fields',
|
32
|
+
'======',
|
33
|
+
@fields.to_s,
|
34
|
+
]
|
35
|
+
|
36
|
+
if @options
|
37
|
+
parts += [
|
38
|
+
'Options',
|
39
|
+
'=======',
|
40
|
+
@options.to_s,
|
41
|
+
]
|
42
|
+
end
|
43
|
+
|
44
|
+
parts.join("\n")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'raw_text'
|
4
|
+
|
5
|
+
module Mindee
|
6
|
+
module Parsing
|
7
|
+
module V2
|
8
|
+
# Optional data returned alongside an inference.
|
9
|
+
class InferenceResultOptions
|
10
|
+
# @return [Array<RawText>] Collection of raw texts per page.
|
11
|
+
attr_reader :raw_texts
|
12
|
+
|
13
|
+
# @param server_response [Hash] Raw JSON parsed into a Hash.
|
14
|
+
def initialize(server_response)
|
15
|
+
raw = server_response['raw_texts']
|
16
|
+
@raw_texts = raw.is_a?(Array) ? raw.map { |rt| RawText.new(rt) } : []
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'date'
|
4
|
+
require_relative 'error_response'
|
5
|
+
require_relative 'job_webhook'
|
6
|
+
|
7
|
+
module Mindee
|
8
|
+
module Parsing
|
9
|
+
module V2
|
10
|
+
# Metadata returned when polling a job (asynchronous request).
|
11
|
+
class Job
|
12
|
+
# @return [String] Unique job identifier.
|
13
|
+
attr_reader :id
|
14
|
+
# @return [DateTime, nil] Timestamp of creation.
|
15
|
+
attr_reader :created_at
|
16
|
+
# @return [String] Identifier of the model used.
|
17
|
+
attr_reader :model_id
|
18
|
+
# @return [String] Name of the processed file.
|
19
|
+
attr_reader :filename
|
20
|
+
# @return [String] Optional alias for the file.
|
21
|
+
attr_reader :alias
|
22
|
+
# @return [String, nil] Current status (submitted, processing, done, …).
|
23
|
+
attr_reader :status
|
24
|
+
# @return [String] URL to query for updated status.
|
25
|
+
attr_reader :polling_url
|
26
|
+
# @return [String, nil] URL that redirects to the final result once ready.
|
27
|
+
attr_reader :result_url
|
28
|
+
# @return [Array<JobWebhook>] Webhooks triggered by the job.
|
29
|
+
attr_reader :webhooks
|
30
|
+
# @return [ErrorResponse, nil] Error details when the job failed.
|
31
|
+
attr_reader :error
|
32
|
+
|
33
|
+
# @param server_response [Hash] Parsed JSON payload from the API.
|
34
|
+
def initialize(server_response)
|
35
|
+
raise ArgumentError, 'server_response must be a Hash' unless server_response.is_a?(Hash)
|
36
|
+
|
37
|
+
@id = server_response['id']
|
38
|
+
@status = server_response['status'] if server_response.key?('status')
|
39
|
+
unless server_response['error'].nil? || server_response['error'].empty?
|
40
|
+
@error = ErrorResponse.new(server_response['error'])
|
41
|
+
end
|
42
|
+
@created_at = Time.iso8601(server_response['created_at'])
|
43
|
+
@model_id = server_response['model_id']
|
44
|
+
@polling_url = server_response['polling_url']
|
45
|
+
@filename = server_response['filename']
|
46
|
+
@result_url = server_response['result_url']
|
47
|
+
@alias = server_response['alias']
|
48
|
+
@webhooks = []
|
49
|
+
server_response['webhooks'].each do |webhook|
|
50
|
+
@webhooks.push JobWebhook.new(webhook)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# String representation.
|
55
|
+
# @return [String]
|
56
|
+
def to_s
|
57
|
+
lines = [
|
58
|
+
'Job',
|
59
|
+
'###',
|
60
|
+
":ID: #{@id}",
|
61
|
+
":CreatedAt: #{@created_at}",
|
62
|
+
":ModelID: #{@model_id}",
|
63
|
+
":Filename: #{@filename}",
|
64
|
+
":Alias: #{@alias}",
|
65
|
+
":Status: #{@status}",
|
66
|
+
":PollingURL: #{@polling_url}",
|
67
|
+
":ResultURL: #{@result_url}",
|
68
|
+
]
|
69
|
+
|
70
|
+
lines << @error.to_s if @error
|
71
|
+
|
72
|
+
unless @webhooks.empty?
|
73
|
+
lines += [
|
74
|
+
'',
|
75
|
+
'Webhooks',
|
76
|
+
'=========',
|
77
|
+
@webhooks.map(&:to_s).join("\n\n"),
|
78
|
+
]
|
79
|
+
end
|
80
|
+
|
81
|
+
lines.join("\n")
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'common_response'
|
4
|
+
require_relative 'job'
|
5
|
+
|
6
|
+
module Mindee
|
7
|
+
module Parsing
|
8
|
+
module V2
|
9
|
+
# HTTP response wrapper that embeds a V2 job.
|
10
|
+
class JobResponse < CommonResponse
|
11
|
+
# @return [Job] Parsed job payload.
|
12
|
+
attr_reader :job
|
13
|
+
|
14
|
+
# @param server_response [Hash] Hash parsed from the API JSON response.
|
15
|
+
def initialize(server_response)
|
16
|
+
# CommonResponse takes care of the generic metadata (status, etc.)
|
17
|
+
super
|
18
|
+
|
19
|
+
@job = Job.new(server_response['job'])
|
20
|
+
end
|
21
|
+
|
22
|
+
# String representation.
|
23
|
+
# @return [String]
|
24
|
+
def to_s
|
25
|
+
@job.to_s
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# lib/mindee/parsing/v2/job_response_webhook.rb
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'date'
|
5
|
+
require_relative 'error_response'
|
6
|
+
|
7
|
+
module Mindee
|
8
|
+
module Parsing
|
9
|
+
module V2
|
10
|
+
# Information about a webhook created for a job response.
|
11
|
+
class JobWebhook
|
12
|
+
# @return [String] Identifier of the webhook.
|
13
|
+
attr_reader :id
|
14
|
+
# @return [DateTime, nil] Creation timestamp (or +nil+ when absent).
|
15
|
+
attr_reader :created_at
|
16
|
+
# @return [String] Webhook status.
|
17
|
+
attr_reader :status
|
18
|
+
# @return [ErrorResponse, nil] Error information when something failed.
|
19
|
+
attr_reader :error
|
20
|
+
|
21
|
+
# @param server_response [Hash] Raw JSON parsed into a Hash.
|
22
|
+
def initialize(server_response)
|
23
|
+
@id = server_response['id']
|
24
|
+
@created_at = parse_date(server_response['created_at'])
|
25
|
+
@status = server_response['status']
|
26
|
+
@error = ErrorResponse.new(server_response['error']) if server_response.key?('error')
|
27
|
+
end
|
28
|
+
|
29
|
+
# RST display.
|
30
|
+
#
|
31
|
+
# @return [String]
|
32
|
+
def to_s
|
33
|
+
parts = [
|
34
|
+
'JobResponseWebhook',
|
35
|
+
'##################',
|
36
|
+
":ID: #{@id}",
|
37
|
+
":CreatedAt: #{@created_at}",
|
38
|
+
":Status: #{@status}",
|
39
|
+
]
|
40
|
+
|
41
|
+
parts << @error.to_s if @error
|
42
|
+
parts.join("\n")
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
# Safely parse an ISO-8601 date/time string to DateTime.
|
48
|
+
# @param str [String, nil] The date string.
|
49
|
+
# @return [DateTime, nil]
|
50
|
+
def parse_date(str)
|
51
|
+
return nil if str.to_s.empty?
|
52
|
+
|
53
|
+
DateTime.iso8601(str || '')
|
54
|
+
rescue ArgumentError
|
55
|
+
nil
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mindee
|
4
|
+
module Parsing
|
5
|
+
module V2
|
6
|
+
# Raw text extracted from a given page.
|
7
|
+
class RawText
|
8
|
+
# @return [Integer] Page number where the text was found.
|
9
|
+
attr_reader :page
|
10
|
+
# @return [String] Text content.
|
11
|
+
attr_reader :content
|
12
|
+
|
13
|
+
# @param server_response [Hash] Raw JSON parsed into a Hash.
|
14
|
+
def initialize(server_response)
|
15
|
+
@page = server_response['page']
|
16
|
+
@content = server_response['content']
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'v2/common_response'
|
4
|
+
require_relative 'v2/error_response'
|
5
|
+
require_relative 'v2/field'
|
6
|
+
require_relative 'v2/inference'
|
7
|
+
require_relative 'v2/inference_file'
|
8
|
+
require_relative 'v2/inference_model'
|
9
|
+
require_relative 'v2/inference_response'
|
10
|
+
require_relative 'v2/inference_result'
|
11
|
+
require_relative 'v2/inference_result_options'
|
12
|
+
require_relative 'v2/job'
|
13
|
+
require_relative 'v2/job_response'
|
14
|
+
require_relative 'v2/job_webhook'
|
15
|
+
require_relative 'v2/raw_text'
|
@@ -7,14 +7,14 @@ module Mindee
|
|
7
7
|
# An extracted sub-Pdf.
|
8
8
|
class ExtractedPDF
|
9
9
|
# Byte contents of the pdf
|
10
|
-
# @return [
|
10
|
+
# @return [StringIO]
|
11
11
|
attr_reader :pdf_bytes
|
12
12
|
|
13
13
|
# Name of the file.
|
14
14
|
# @return [String]
|
15
15
|
attr_reader :filename
|
16
16
|
|
17
|
-
# @param pdf_bytes [
|
17
|
+
# @param pdf_bytes [StringIO]
|
18
18
|
# @param filename [String]
|
19
19
|
def initialize(pdf_bytes, filename)
|
20
20
|
@pdf_bytes = pdf_bytes
|
@@ -50,7 +50,9 @@ module Mindee
|
|
50
50
|
# Returns the current PDF object as a usable BytesInputSource.
|
51
51
|
# @return [Mindee::Input::Source::BytesInputSource]
|
52
52
|
def as_input_source
|
53
|
-
|
53
|
+
raise Errors::MindeePDFError, 'Bytes object is nil.' if @pdf_bytes.nil?
|
54
|
+
|
55
|
+
Mindee::Input::Source::BytesInputSource.new(@pdf_bytes.read || '', @filename)
|
54
56
|
end
|
55
57
|
end
|
56
58
|
end
|
@@ -29,7 +29,7 @@ module Mindee
|
|
29
29
|
|
30
30
|
# Creates a new Pdf from pages and save it into a buffer.
|
31
31
|
# @param page_indexes [Array<Integer>] List of page number to use for merging in the original Pdf.
|
32
|
-
# @return [
|
32
|
+
# @return [StringIO] The buffer containing the new Pdf.
|
33
33
|
def cut_pages(page_indexes)
|
34
34
|
options = PageOptions.new(params: {
|
35
35
|
page_indexes: page_indexes,
|
@@ -75,24 +75,28 @@ module Mindee
|
|
75
75
|
# @return [Array<Mindee::PDF::PDFExtractor::ExtractedPDF>]
|
76
76
|
def extract_invoices(page_indexes, strict: false)
|
77
77
|
raise Errors::MindeePDFError, 'No indexes provided.' if page_indexes.empty?
|
78
|
+
|
78
79
|
if page_indexes[0].is_a?(Array) && page_indexes[0].all? { |i| i.is_a?(Integer) }
|
79
|
-
|
80
|
+
page_indexes_as_array = page_indexes # @type var page_indexes : Array[Array[Integer]]
|
81
|
+
return extract_sub_documents(page_indexes_as_array)
|
80
82
|
end
|
81
|
-
|
83
|
+
p_ids = page_indexes # @type var page_indexes: Product::InvoiceSplitter::InvoiceSplitterV1InvoicePageGroups
|
84
|
+
return extract_sub_documents(p_ids.map(&:page_indexes)) unless strict
|
82
85
|
|
83
86
|
correct_page_indexes = []
|
84
87
|
current_list = []
|
85
88
|
previous_confidence = nil
|
86
|
-
|
87
|
-
|
89
|
+
p_ids.each_with_index do |p_i, i|
|
90
|
+
page_index = p_i # @type var page_index: Product::InvoiceSplitter::InvoiceSplitterV1InvoicePageGroup
|
91
|
+
confidence = page_index.confidence.to_f
|
88
92
|
page_list = page_index.page_indexes
|
89
93
|
|
90
94
|
if confidence >= 0.5 && previous_confidence.nil?
|
91
95
|
current_list = page_list
|
92
|
-
elsif confidence >= 0.5 && i <
|
96
|
+
elsif confidence >= 0.5 && i < p_ids.length - 1
|
93
97
|
correct_page_indexes << current_list
|
94
98
|
current_list = page_list
|
95
|
-
elsif confidence < 0.5 && i ==
|
99
|
+
elsif confidence < 0.5 && i == p_ids.length - 1
|
96
100
|
current_list.concat page_list
|
97
101
|
correct_page_indexes << current_list
|
98
102
|
else
|