mindee-lite 5.0.0.beta1

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.
Files changed (510) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +24 -0
  3. data/.gitattributes +14 -0
  4. data/.gitignore +76 -0
  5. data/.gitmodules +3 -0
  6. data/.pre-commit-config.yaml +36 -0
  7. data/.rubocop.yml +49 -0
  8. data/.yardopts +4 -0
  9. data/CHANGELOG.md +515 -0
  10. data/CODE_OF_CONDUCT.md +129 -0
  11. data/CONTRIBUTING.md +107 -0
  12. data/Gemfile +14 -0
  13. data/LICENSE +21 -0
  14. data/README.md +42 -0
  15. data/Rakefile +40 -0
  16. data/Steepfile +30 -0
  17. data/bin/console +14 -0
  18. data/bin/mindee.rb +30 -0
  19. data/bin/v1/parser.rb +153 -0
  20. data/bin/v1/products.rb +88 -0
  21. data/bin/v2/parser.rb +235 -0
  22. data/bin/v2/products.rb +34 -0
  23. data/docs/code_samples/bank_account_details_v1.txt +24 -0
  24. data/docs/code_samples/bank_account_details_v2.txt +24 -0
  25. data/docs/code_samples/bank_statement_fr_v2_async.txt +24 -0
  26. data/docs/code_samples/barcode_reader_v1.txt +24 -0
  27. data/docs/code_samples/cropper_v1.txt +21 -0
  28. data/docs/code_samples/default.txt +30 -0
  29. data/docs/code_samples/default_async.txt +29 -0
  30. data/docs/code_samples/expense_receipts_v5.txt +25 -0
  31. data/docs/code_samples/expense_receipts_v5_async.txt +24 -0
  32. data/docs/code_samples/financial_document_v1.txt +25 -0
  33. data/docs/code_samples/financial_document_v1_async.txt +24 -0
  34. data/docs/code_samples/idcard_fr_v1.txt +24 -0
  35. data/docs/code_samples/idcard_fr_v2.txt +24 -0
  36. data/docs/code_samples/international_id_v2_async.txt +24 -0
  37. data/docs/code_samples/invoice_splitter_v1_async.txt +24 -0
  38. data/docs/code_samples/invoices_v4.txt +25 -0
  39. data/docs/code_samples/invoices_v4_async.txt +24 -0
  40. data/docs/code_samples/multi_receipts_detector_v1.txt +24 -0
  41. data/docs/code_samples/passport_v1.txt +24 -0
  42. data/docs/code_samples/resume_v1_async.txt +24 -0
  43. data/docs/code_samples/v2_classification.txt +30 -0
  44. data/docs/code_samples/v2_crop.txt +30 -0
  45. data/docs/code_samples/v2_extraction.txt +42 -0
  46. data/docs/code_samples/v2_extraction_webhook.txt +45 -0
  47. data/docs/code_samples/v2_ocr.txt +30 -0
  48. data/docs/code_samples/v2_split.txt +30 -0
  49. data/docs/code_samples/workflow_execution.txt +28 -0
  50. data/docs/code_samples/workflow_polling.txt +35 -0
  51. data/examples/auto_invoice_splitter_extraction.rb +48 -0
  52. data/examples/auto_multi_receipts_detector_extraction.rb +30 -0
  53. data/lib/mindee/dependency.rb +29 -0
  54. data/lib/mindee/error/mindee_error.rb +17 -0
  55. data/lib/mindee/error/mindee_http_error.rb +36 -0
  56. data/lib/mindee/error/mindee_http_error_v2.rb +45 -0
  57. data/lib/mindee/error/mindee_http_unknown_error_v2.rb +18 -0
  58. data/lib/mindee/error/mindee_input_error.rb +30 -0
  59. data/lib/mindee/error.rb +6 -0
  60. data/lib/mindee/geometry/min_max.rb +23 -0
  61. data/lib/mindee/geometry/point.rb +41 -0
  62. data/lib/mindee/geometry/polygon.rb +37 -0
  63. data/lib/mindee/geometry/quadrilateral.rb +50 -0
  64. data/lib/mindee/geometry/utils.rb +88 -0
  65. data/lib/mindee/geometry.rb +7 -0
  66. data/lib/mindee/http/.rubocop.yml +7 -0
  67. data/lib/mindee/http/http_error_handler.rb +106 -0
  68. data/lib/mindee/http/response_validation.rb +81 -0
  69. data/lib/mindee/http.rb +3 -0
  70. data/lib/mindee/image/extracted_image.rb +89 -0
  71. data/lib/mindee/image/image_compressor.rb +29 -0
  72. data/lib/mindee/image/image_extractor.rb +118 -0
  73. data/lib/mindee/image/image_utils.rb +165 -0
  74. data/lib/mindee/image.rb +6 -0
  75. data/lib/mindee/input/base_parameters.rb +149 -0
  76. data/lib/mindee/input/local_response.rb +80 -0
  77. data/lib/mindee/input/polling_options.rb +26 -0
  78. data/lib/mindee/input/sources/base64_input_source.rb +31 -0
  79. data/lib/mindee/input/sources/bytes_input_source.rb +21 -0
  80. data/lib/mindee/input/sources/file_input_source.rb +20 -0
  81. data/lib/mindee/input/sources/local_input_source.rb +216 -0
  82. data/lib/mindee/input/sources/path_input_source.rb +20 -0
  83. data/lib/mindee/input/sources/url_input_source.rb +130 -0
  84. data/lib/mindee/input/sources.rb +8 -0
  85. data/lib/mindee/input.rb +4 -0
  86. data/lib/mindee/logging/logger.rb +24 -0
  87. data/lib/mindee/logging.rb +3 -0
  88. data/lib/mindee/page_options.rb +24 -0
  89. data/lib/mindee/pdf/extracted_pdf.rb +70 -0
  90. data/lib/mindee/pdf/pdf_compressor.rb +121 -0
  91. data/lib/mindee/pdf/pdf_extractor.rb +121 -0
  92. data/lib/mindee/pdf/pdf_processor.rb +91 -0
  93. data/lib/mindee/pdf/pdf_tools.rb +201 -0
  94. data/lib/mindee/pdf.rb +7 -0
  95. data/lib/mindee/v1/client.rb +490 -0
  96. data/lib/mindee/v1/extraction/multi_receipts_extractor.rb +32 -0
  97. data/lib/mindee/v1/extraction.rb +3 -0
  98. data/lib/mindee/v1/http/.rubocop.yml +7 -0
  99. data/lib/mindee/v1/http/endpoint.rb +221 -0
  100. data/lib/mindee/v1/http/workflow_endpoint.rb +93 -0
  101. data/lib/mindee/v1/http.rb +4 -0
  102. data/lib/mindee/v1/parsing/common/api_request.rb +38 -0
  103. data/lib/mindee/v1/parsing/common/api_response.rb +63 -0
  104. data/lib/mindee/v1/parsing/common/document.rb +86 -0
  105. data/lib/mindee/v1/parsing/common/execution.rb +78 -0
  106. data/lib/mindee/v1/parsing/common/execution_file.rb +26 -0
  107. data/lib/mindee/v1/parsing/common/execution_priority.rb +38 -0
  108. data/lib/mindee/v1/parsing/common/extras/cropper_extra.rb +32 -0
  109. data/lib/mindee/v1/parsing/common/extras/extras.rb +62 -0
  110. data/lib/mindee/v1/parsing/common/extras/full_text_ocr_extra.rb +35 -0
  111. data/lib/mindee/v1/parsing/common/extras/rag_extra.rb +28 -0
  112. data/lib/mindee/v1/parsing/common/extras.rb +6 -0
  113. data/lib/mindee/v1/parsing/common/inference.rb +69 -0
  114. data/lib/mindee/v1/parsing/common/job.rb +48 -0
  115. data/lib/mindee/v1/parsing/common/ocr/mvision_v1.rb +52 -0
  116. data/lib/mindee/v1/parsing/common/ocr/ocr.rb +180 -0
  117. data/lib/mindee/v1/parsing/common/ocr.rb +3 -0
  118. data/lib/mindee/v1/parsing/common/orientation.rb +28 -0
  119. data/lib/mindee/v1/parsing/common/page.rb +49 -0
  120. data/lib/mindee/v1/parsing/common/prediction.rb +19 -0
  121. data/lib/mindee/v1/parsing/common/product.rb +26 -0
  122. data/lib/mindee/v1/parsing/common/workflow_response.rb +30 -0
  123. data/lib/mindee/v1/parsing/common.rb +15 -0
  124. data/lib/mindee/v1/parsing/standard/abstract_field.rb +74 -0
  125. data/lib/mindee/v1/parsing/standard/address_field.rb +51 -0
  126. data/lib/mindee/v1/parsing/standard/amount_field.rb +28 -0
  127. data/lib/mindee/v1/parsing/standard/base_field.rb +30 -0
  128. data/lib/mindee/v1/parsing/standard/boolean_field.rb +29 -0
  129. data/lib/mindee/v1/parsing/standard/classification_field.rb +18 -0
  130. data/lib/mindee/v1/parsing/standard/company_registration_field.rb +45 -0
  131. data/lib/mindee/v1/parsing/standard/date_field.rb +40 -0
  132. data/lib/mindee/v1/parsing/standard/feature_field.rb +26 -0
  133. data/lib/mindee/v1/parsing/standard/locale_field.rb +52 -0
  134. data/lib/mindee/v1/parsing/standard/payment_details_field.rb +44 -0
  135. data/lib/mindee/v1/parsing/standard/position_field.rb +61 -0
  136. data/lib/mindee/v1/parsing/standard/string_field.rb +26 -0
  137. data/lib/mindee/v1/parsing/standard/tax_field.rb +110 -0
  138. data/lib/mindee/v1/parsing/standard.rb +15 -0
  139. data/lib/mindee/v1/parsing/universal/universal_list_field.rb +60 -0
  140. data/lib/mindee/v1/parsing/universal/universal_object_field.rb +123 -0
  141. data/lib/mindee/v1/parsing/universal.rb +4 -0
  142. data/lib/mindee/v1/parsing.rb +5 -0
  143. data/lib/mindee/v1/product/.rubocop.yml +12 -0
  144. data/lib/mindee/v1/product/barcode_reader/barcode_reader_v1.rb +47 -0
  145. data/lib/mindee/v1/product/barcode_reader/barcode_reader_v1_document.rb +47 -0
  146. data/lib/mindee/v1/product/barcode_reader/barcode_reader_v1_page.rb +38 -0
  147. data/lib/mindee/v1/product/cropper/cropper_v1.rb +47 -0
  148. data/lib/mindee/v1/product/cropper/cropper_v1_document.rb +15 -0
  149. data/lib/mindee/v1/product/cropper/cropper_v1_page.rb +55 -0
  150. data/lib/mindee/v1/product/financial_document/financial_document_v1.rb +47 -0
  151. data/lib/mindee/v1/product/financial_document/financial_document_v1_document.rb +329 -0
  152. data/lib/mindee/v1/product/financial_document/financial_document_v1_line_item.rb +124 -0
  153. data/lib/mindee/v1/product/financial_document/financial_document_v1_line_items.rb +64 -0
  154. data/lib/mindee/v1/product/financial_document/financial_document_v1_page.rb +38 -0
  155. data/lib/mindee/v1/product/fr/bank_account_details/bank_account_details_v1.rb +49 -0
  156. data/lib/mindee/v1/product/fr/bank_account_details/bank_account_details_v1_document.rb +49 -0
  157. data/lib/mindee/v1/product/fr/bank_account_details/bank_account_details_v1_page.rb +40 -0
  158. data/lib/mindee/v1/product/fr/bank_account_details/bank_account_details_v2.rb +49 -0
  159. data/lib/mindee/v1/product/fr/bank_account_details/bank_account_details_v2_bban.rb +63 -0
  160. data/lib/mindee/v1/product/fr/bank_account_details/bank_account_details_v2_document.rb +60 -0
  161. data/lib/mindee/v1/product/fr/bank_account_details/bank_account_details_v2_page.rb +40 -0
  162. data/lib/mindee/v1/product/fr/bank_statement/bank_statement_v2.rb +49 -0
  163. data/lib/mindee/v1/product/fr/bank_statement/bank_statement_v2_document.rb +169 -0
  164. data/lib/mindee/v1/product/fr/bank_statement/bank_statement_v2_page.rb +40 -0
  165. data/lib/mindee/v1/product/fr/bank_statement/bank_statement_v2_transaction.rb +78 -0
  166. data/lib/mindee/v1/product/fr/bank_statement/bank_statement_v2_transactions.rb +56 -0
  167. data/lib/mindee/v1/product/fr/id_card/id_card_v1.rb +49 -0
  168. data/lib/mindee/v1/product/fr/id_card/id_card_v1_document.rb +106 -0
  169. data/lib/mindee/v1/product/fr/id_card/id_card_v1_page.rb +57 -0
  170. data/lib/mindee/v1/product/fr/id_card/id_card_v2.rb +49 -0
  171. data/lib/mindee/v1/product/fr/id_card/id_card_v2_document.rb +143 -0
  172. data/lib/mindee/v1/product/fr/id_card/id_card_v2_page.rb +65 -0
  173. data/lib/mindee/v1/product/international_id/international_id_v2.rb +47 -0
  174. data/lib/mindee/v1/product/international_id/international_id_v2_document.rb +164 -0
  175. data/lib/mindee/v1/product/international_id/international_id_v2_page.rb +38 -0
  176. data/lib/mindee/v1/product/invoice/invoice_v4.rb +47 -0
  177. data/lib/mindee/v1/product/invoice/invoice_v4_document.rb +300 -0
  178. data/lib/mindee/v1/product/invoice/invoice_v4_line_item.rb +124 -0
  179. data/lib/mindee/v1/product/invoice/invoice_v4_line_items.rb +64 -0
  180. data/lib/mindee/v1/product/invoice/invoice_v4_page.rb +38 -0
  181. data/lib/mindee/v1/product/invoice_splitter/invoice_splitter_v1.rb +47 -0
  182. data/lib/mindee/v1/product/invoice_splitter/invoice_splitter_v1_document.rb +66 -0
  183. data/lib/mindee/v1/product/invoice_splitter/invoice_splitter_v1_invoice_page_group.rb +58 -0
  184. data/lib/mindee/v1/product/invoice_splitter/invoice_splitter_v1_invoice_page_groups.rb +50 -0
  185. data/lib/mindee/v1/product/invoice_splitter/invoice_splitter_v1_page.rb +38 -0
  186. data/lib/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1.rb +47 -0
  187. data/lib/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1_document.rb +38 -0
  188. data/lib/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1_page.rb +38 -0
  189. data/lib/mindee/v1/product/passport/passport_v1.rb +47 -0
  190. data/lib/mindee/v1/product/passport/passport_v1_document.rb +112 -0
  191. data/lib/mindee/v1/product/passport/passport_v1_page.rb +38 -0
  192. data/lib/mindee/v1/product/receipt/receipt_v5.rb +47 -0
  193. data/lib/mindee/v1/product/receipt/receipt_v5_document.rb +187 -0
  194. data/lib/mindee/v1/product/receipt/receipt_v5_line_item.rb +88 -0
  195. data/lib/mindee/v1/product/receipt/receipt_v5_line_items.rb +56 -0
  196. data/lib/mindee/v1/product/receipt/receipt_v5_page.rb +38 -0
  197. data/lib/mindee/v1/product/resume/resume_v1.rb +47 -0
  198. data/lib/mindee/v1/product/resume/resume_v1_certificate.rb +82 -0
  199. data/lib/mindee/v1/product/resume/resume_v1_certificates.rb +60 -0
  200. data/lib/mindee/v1/product/resume/resume_v1_document.rb +340 -0
  201. data/lib/mindee/v1/product/resume/resume_v1_education.rb +106 -0
  202. data/lib/mindee/v1/product/resume/resume_v1_educations.rb +66 -0
  203. data/lib/mindee/v1/product/resume/resume_v1_language.rb +66 -0
  204. data/lib/mindee/v1/product/resume/resume_v1_languages.rb +56 -0
  205. data/lib/mindee/v1/product/resume/resume_v1_page.rb +38 -0
  206. data/lib/mindee/v1/product/resume/resume_v1_professional_experience.rb +122 -0
  207. data/lib/mindee/v1/product/resume/resume_v1_professional_experiences.rb +70 -0
  208. data/lib/mindee/v1/product/resume/resume_v1_social_networks_url.rb +66 -0
  209. data/lib/mindee/v1/product/resume/resume_v1_social_networks_urls.rb +56 -0
  210. data/lib/mindee/v1/product/universal/universal.rb +48 -0
  211. data/lib/mindee/v1/product/universal/universal_document.rb +35 -0
  212. data/lib/mindee/v1/product/universal/universal_page.rb +54 -0
  213. data/lib/mindee/v1/product/universal/universal_prediction.rb +128 -0
  214. data/lib/mindee/v1/product.rb +18 -0
  215. data/lib/mindee/v1.rb +7 -0
  216. data/lib/mindee/v2/client.rb +132 -0
  217. data/lib/mindee/v2/file_operation/crop.rb +51 -0
  218. data/lib/mindee/v2/file_operation/crop_files.rb +25 -0
  219. data/lib/mindee/v2/file_operation/split.rb +37 -0
  220. data/lib/mindee/v2/file_operation/split_files.rb +25 -0
  221. data/lib/mindee/v2/file_operation.rb +6 -0
  222. data/lib/mindee/v2/http/.rubocop.yml +7 -0
  223. data/lib/mindee/v2/http/api_v2_settings.rb +65 -0
  224. data/lib/mindee/v2/http/mindee_api_v2.rb +230 -0
  225. data/lib/mindee/v2/http.rb +4 -0
  226. data/lib/mindee/v2/parsing/base_inference.rb +44 -0
  227. data/lib/mindee/v2/parsing/base_response.rb +15 -0
  228. data/lib/mindee/v2/parsing/common_response.rb +20 -0
  229. data/lib/mindee/v2/parsing/error_item.rb +21 -0
  230. data/lib/mindee/v2/parsing/error_response.rb +51 -0
  231. data/lib/mindee/v2/parsing/field/base_field.rb +63 -0
  232. data/lib/mindee/v2/parsing/field/field_confidence.rb +128 -0
  233. data/lib/mindee/v2/parsing/field/field_location.rb +33 -0
  234. data/lib/mindee/v2/parsing/field/inference_fields.rb +105 -0
  235. data/lib/mindee/v2/parsing/field/list_field.rb +79 -0
  236. data/lib/mindee/v2/parsing/field/object_field.rb +138 -0
  237. data/lib/mindee/v2/parsing/field/simple_field.rb +60 -0
  238. data/lib/mindee/v2/parsing/field.rb +9 -0
  239. data/lib/mindee/v2/parsing/inference_active_options.rb +67 -0
  240. data/lib/mindee/v2/parsing/inference_file.rb +38 -0
  241. data/lib/mindee/v2/parsing/inference_job.rb +25 -0
  242. data/lib/mindee/v2/parsing/inference_model.rb +30 -0
  243. data/lib/mindee/v2/parsing/job.rb +93 -0
  244. data/lib/mindee/v2/parsing/job_response.rb +30 -0
  245. data/lib/mindee/v2/parsing/job_webhook.rb +59 -0
  246. data/lib/mindee/v2/parsing/rag_metadata.rb +17 -0
  247. data/lib/mindee/v2/parsing/raw_text.rb +27 -0
  248. data/lib/mindee/v2/parsing/raw_text_page.rb +24 -0
  249. data/lib/mindee/v2/parsing/search/pagination_metadata.rb +44 -0
  250. data/lib/mindee/v2/parsing/search/search_model.rb +38 -0
  251. data/lib/mindee/v2/parsing/search/search_models.rb +34 -0
  252. data/lib/mindee/v2/parsing/search/search_response.rb +38 -0
  253. data/lib/mindee/v2/parsing/search.rb +6 -0
  254. data/lib/mindee/v2/parsing.rb +16 -0
  255. data/lib/mindee/v2/product/base_product.rb +28 -0
  256. data/lib/mindee/v2/product/classification/classification.rb +20 -0
  257. data/lib/mindee/v2/product/classification/classification_classifier.rb +25 -0
  258. data/lib/mindee/v2/product/classification/classification_inference.rb +35 -0
  259. data/lib/mindee/v2/product/classification/classification_response.rb +32 -0
  260. data/lib/mindee/v2/product/classification/classification_result.rb +27 -0
  261. data/lib/mindee/v2/product/classification/params/classification_parameters.rb +47 -0
  262. data/lib/mindee/v2/product/crop/crop.rb +20 -0
  263. data/lib/mindee/v2/product/crop/crop_inference.rb +34 -0
  264. data/lib/mindee/v2/product/crop/crop_item.rb +39 -0
  265. data/lib/mindee/v2/product/crop/crop_response.rb +40 -0
  266. data/lib/mindee/v2/product/crop/crop_result.rb +34 -0
  267. data/lib/mindee/v2/product/crop/params/crop_parameters.rb +47 -0
  268. data/lib/mindee/v2/product/extraction/extraction.rb +21 -0
  269. data/lib/mindee/v2/product/extraction/extraction_inference.rb +40 -0
  270. data/lib/mindee/v2/product/extraction/extraction_response.rb +32 -0
  271. data/lib/mindee/v2/product/extraction/extraction_result.rb +44 -0
  272. data/lib/mindee/v2/product/extraction/params/data_schema.rb +51 -0
  273. data/lib/mindee/v2/product/extraction/params/data_schema_field.rb +69 -0
  274. data/lib/mindee/v2/product/extraction/params/data_schema_replace.rb +39 -0
  275. data/lib/mindee/v2/product/extraction/params/extraction_parameters.rb +125 -0
  276. data/lib/mindee/v2/product/ocr/ocr.rb +20 -0
  277. data/lib/mindee/v2/product/ocr/ocr_inference.rb +34 -0
  278. data/lib/mindee/v2/product/ocr/ocr_page.rb +33 -0
  279. data/lib/mindee/v2/product/ocr/ocr_response.rb +32 -0
  280. data/lib/mindee/v2/product/ocr/ocr_result.rb +34 -0
  281. data/lib/mindee/v2/product/ocr/ocr_word.rb +29 -0
  282. data/lib/mindee/v2/product/ocr/params/ocr_parameters.rb +47 -0
  283. data/lib/mindee/v2/product/split/params/split_parameters.rb +48 -0
  284. data/lib/mindee/v2/product/split/split.rb +19 -0
  285. data/lib/mindee/v2/product/split/split_inference.rb +34 -0
  286. data/lib/mindee/v2/product/split/split_range.rb +38 -0
  287. data/lib/mindee/v2/product/split/split_response.rb +40 -0
  288. data/lib/mindee/v2/product/split/split_result.rb +34 -0
  289. data/lib/mindee/v2/product.rb +7 -0
  290. data/lib/mindee/v2.rb +7 -0
  291. data/lib/mindee/version.rb +26 -0
  292. data/lib/mindee.rb +135 -0
  293. data/mindee-lite.gemspec +36 -0
  294. data/mindee.gemspec +44 -0
  295. data/sig/custom/marcel.rbs +3 -0
  296. data/sig/custom/mini_magick.rbs +31 -0
  297. data/sig/custom/net_http.rbs +43 -0
  298. data/sig/custom/origami.rbs +59 -0
  299. data/sig/mindee/dependency.rbs +13 -0
  300. data/sig/mindee/error/mindee_error.rbs +13 -0
  301. data/sig/mindee/error/mindee_http_error.rbs +17 -0
  302. data/sig/mindee/error/mindee_http_error_v2.rbs +15 -0
  303. data/sig/mindee/error/mindee_http_unknown_error_v2.rbs +9 -0
  304. data/sig/mindee/error/mindee_input_error.rbs +18 -0
  305. data/sig/mindee/geometry/min_max.rbs +11 -0
  306. data/sig/mindee/geometry/point.rbs +14 -0
  307. data/sig/mindee/geometry/polygon.rbs +12 -0
  308. data/sig/mindee/geometry/quadrilateral.rbs +15 -0
  309. data/sig/mindee/geometry/utils.rbs +13 -0
  310. data/sig/mindee/http/http_error_handler.rbs +15 -0
  311. data/sig/mindee/http/response_validation.rbs +11 -0
  312. data/sig/mindee/image/extracted_image.rbs +21 -0
  313. data/sig/mindee/image/image_compressor.rbs +8 -0
  314. data/sig/mindee/image/image_extractor.rbs +13 -0
  315. data/sig/mindee/image/image_utils.rbs +19 -0
  316. data/sig/mindee/input/base_parameters.rbs +35 -0
  317. data/sig/mindee/input/local_response.rbs +14 -0
  318. data/sig/mindee/input/polling_options.rbs +12 -0
  319. data/sig/mindee/input/sources/base64_input_source.rbs +11 -0
  320. data/sig/mindee/input/sources/bytes_input_source.rbs +10 -0
  321. data/sig/mindee/input/sources/file_input_source.rbs +10 -0
  322. data/sig/mindee/input/sources/local_input_source.rbs +30 -0
  323. data/sig/mindee/input/sources/path_input_source.rbs +10 -0
  324. data/sig/mindee/input/sources/url_input_source.rbs +20 -0
  325. data/sig/mindee/logging/logger.rbs +11 -0
  326. data/sig/mindee/page_options.rbs +11 -0
  327. data/sig/mindee/pdf/extracted_pdf.rbs +17 -0
  328. data/sig/mindee/pdf/pdf_compressor.rbs +15 -0
  329. data/sig/mindee/pdf/pdf_extractor.rbs +19 -0
  330. data/sig/mindee/pdf/pdf_processor.rbs +12 -0
  331. data/sig/mindee/pdf/pdf_tools.rbs +31 -0
  332. data/sig/mindee/v1/client.rbs +84 -0
  333. data/sig/mindee/v1/extraction/multi_receipts_extractor.rbs +8 -0
  334. data/sig/mindee/v1/http/endpoint.rbs +41 -0
  335. data/sig/mindee/v1/http/workflow_endpoint.rbs +22 -0
  336. data/sig/mindee/v1/parsing/common/api_request.rbs +22 -0
  337. data/sig/mindee/v1/parsing/common/api_response.rbs +31 -0
  338. data/sig/mindee/v1/parsing/common/document.rbs +32 -0
  339. data/sig/mindee/v1/parsing/common/execution.rbs +26 -0
  340. data/sig/mindee/v1/parsing/common/execution_file.rbs +16 -0
  341. data/sig/mindee/v1/parsing/common/execution_priority.rbs +16 -0
  342. data/sig/mindee/v1/parsing/common/extras/cropper_extra.rbs +18 -0
  343. data/sig/mindee/v1/parsing/common/extras/extras.rbs +24 -0
  344. data/sig/mindee/v1/parsing/common/extras/full_text_ocr_extra.rbs +22 -0
  345. data/sig/mindee/v1/parsing/common/extras/rag_extra.rbs +19 -0
  346. data/sig/mindee/v1/parsing/common/inference.rbs +31 -0
  347. data/sig/mindee/v1/parsing/common/job.rbs +24 -0
  348. data/sig/mindee/v1/parsing/common/ocr/mvision_v1.rbs +20 -0
  349. data/sig/mindee/v1/parsing/common/ocr/ocr.rbs +56 -0
  350. data/sig/mindee/v1/parsing/common/orientation.rbs +15 -0
  351. data/sig/mindee/v1/parsing/common/page.rbs +19 -0
  352. data/sig/mindee/v1/parsing/common/prediction.rbs +14 -0
  353. data/sig/mindee/v1/parsing/common/product.rbs +16 -0
  354. data/sig/mindee/v1/parsing/common/workflow_response.rbs +22 -0
  355. data/sig/mindee/v1/parsing/standard/abstract_field.rbs +30 -0
  356. data/sig/mindee/v1/parsing/standard/address_field.rbs +28 -0
  357. data/sig/mindee/v1/parsing/standard/amount_field.rbs +16 -0
  358. data/sig/mindee/v1/parsing/standard/base_field.rbs +16 -0
  359. data/sig/mindee/v1/parsing/standard/boolean_field.rbs +16 -0
  360. data/sig/mindee/v1/parsing/standard/classification_field.rbs +12 -0
  361. data/sig/mindee/v1/parsing/standard/company_registration_field.rbs +20 -0
  362. data/sig/mindee/v1/parsing/standard/date_field.rbs +20 -0
  363. data/sig/mindee/v1/parsing/standard/feature_field.rbs +12 -0
  364. data/sig/mindee/v1/parsing/standard/locale_field.rbs +24 -0
  365. data/sig/mindee/v1/parsing/standard/payment_details_field.rbs +19 -0
  366. data/sig/mindee/v1/parsing/standard/position_field.rbs +26 -0
  367. data/sig/mindee/v1/parsing/standard/string_field.rbs +16 -0
  368. data/sig/mindee/v1/parsing/standard/tax_field.rbs +33 -0
  369. data/sig/mindee/v1/parsing/universal/universal_list_field.rbs +21 -0
  370. data/sig/mindee/v1/parsing/universal/universal_object_field.rbs +38 -0
  371. data/sig/mindee/v1/product/barcode_reader/barcode_reader_v1.rbs +13 -0
  372. data/sig/mindee/v1/product/barcode_reader/barcode_reader_v1_document.rbs +16 -0
  373. data/sig/mindee/v1/product/barcode_reader/barcode_reader_v1_page.rbs +17 -0
  374. data/sig/mindee/v1/product/cropper/cropper_v1.rbs +13 -0
  375. data/sig/mindee/v1/product/cropper/cropper_v1_document.rbs +14 -0
  376. data/sig/mindee/v1/product/cropper/cropper_v1_page.rbs +19 -0
  377. data/sig/mindee/v1/product/financial_document/financial_document_v1.rbs +13 -0
  378. data/sig/mindee/v1/product/financial_document/financial_document_v1_document.rbs +49 -0
  379. data/sig/mindee/v1/product/financial_document/financial_document_v1_line_item.rbs +35 -0
  380. data/sig/mindee/v1/product/financial_document/financial_document_v1_line_items.rbs +15 -0
  381. data/sig/mindee/v1/product/financial_document/financial_document_v1_page.rbs +17 -0
  382. data/sig/mindee/v1/product/fr/bank_account_details/bank_account_details_v1.rbs +15 -0
  383. data/sig/mindee/v1/product/fr/bank_account_details/bank_account_details_v1_document.rbs +19 -0
  384. data/sig/mindee/v1/product/fr/bank_account_details/bank_account_details_v1_page.rbs +19 -0
  385. data/sig/mindee/v1/product/fr/bank_account_details/bank_account_details_v2.rbs +15 -0
  386. data/sig/mindee/v1/product/fr/bank_account_details/bank_account_details_v2_bban.rbs +25 -0
  387. data/sig/mindee/v1/product/fr/bank_account_details/bank_account_details_v2_document.rbs +20 -0
  388. data/sig/mindee/v1/product/fr/bank_account_details/bank_account_details_v2_page.rbs +19 -0
  389. data/sig/mindee/v1/product/fr/bank_statement/bank_statement_v2.rbs +15 -0
  390. data/sig/mindee/v1/product/fr/bank_statement/bank_statement_v2_document.rbs +31 -0
  391. data/sig/mindee/v1/product/fr/bank_statement/bank_statement_v2_page.rbs +19 -0
  392. data/sig/mindee/v1/product/fr/bank_statement/bank_statement_v2_transaction.rbs +27 -0
  393. data/sig/mindee/v1/product/fr/bank_statement/bank_statement_v2_transactions.rbs +17 -0
  394. data/sig/mindee/v1/product/fr/id_card/id_card_v1.rbs +15 -0
  395. data/sig/mindee/v1/product/fr/id_card/id_card_v1_document.rbs +26 -0
  396. data/sig/mindee/v1/product/fr/id_card/id_card_v1_page.rbs +20 -0
  397. data/sig/mindee/v1/product/fr/id_card/id_card_v2.rbs +15 -0
  398. data/sig/mindee/v1/product/fr/id_card/id_card_v2_document.rbs +31 -0
  399. data/sig/mindee/v1/product/fr/id_card/id_card_v2_page.rbs +21 -0
  400. data/sig/mindee/v1/product/international_id/international_id_v2.rbs +13 -0
  401. data/sig/mindee/v1/product/international_id/international_id_v2_document.rbs +31 -0
  402. data/sig/mindee/v1/product/international_id/international_id_v2_page.rbs +17 -0
  403. data/sig/mindee/v1/product/invoice/invoice_v4.rbs +13 -0
  404. data/sig/mindee/v1/product/invoice/invoice_v4_document.rbs +45 -0
  405. data/sig/mindee/v1/product/invoice/invoice_v4_line_item.rbs +35 -0
  406. data/sig/mindee/v1/product/invoice/invoice_v4_line_items.rbs +15 -0
  407. data/sig/mindee/v1/product/invoice/invoice_v4_page.rbs +17 -0
  408. data/sig/mindee/v1/product/invoice_splitter/invoice_splitter_v1.rbs +13 -0
  409. data/sig/mindee/v1/product/invoice_splitter/invoice_splitter_v1_document.rbs +17 -0
  410. data/sig/mindee/v1/product/invoice_splitter/invoice_splitter_v1_invoice_page_group.rbs +21 -0
  411. data/sig/mindee/v1/product/invoice_splitter/invoice_splitter_v1_invoice_page_groups.rbs +15 -0
  412. data/sig/mindee/v1/product/invoice_splitter/invoice_splitter_v1_page.rbs +17 -0
  413. data/sig/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1.rbs +14 -0
  414. data/sig/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1_document.rbs +15 -0
  415. data/sig/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1_page.rbs +17 -0
  416. data/sig/mindee/v1/product/passport/passport_v1.rbs +13 -0
  417. data/sig/mindee/v1/product/passport/passport_v1_document.rbs +25 -0
  418. data/sig/mindee/v1/product/passport/passport_v1_page.rbs +17 -0
  419. data/sig/mindee/v1/product/receipt/receipt_v5.rbs +13 -0
  420. data/sig/mindee/v1/product/receipt/receipt_v5_document.rbs +33 -0
  421. data/sig/mindee/v1/product/receipt/receipt_v5_line_item.rbs +27 -0
  422. data/sig/mindee/v1/product/receipt/receipt_v5_line_items.rbs +15 -0
  423. data/sig/mindee/v1/product/receipt/receipt_v5_page.rbs +17 -0
  424. data/sig/mindee/v1/product/resume/resume_v1.rbs +13 -0
  425. data/sig/mindee/v1/product/resume/resume_v1_certificate.rbs +27 -0
  426. data/sig/mindee/v1/product/resume/resume_v1_certificates.rbs +17 -0
  427. data/sig/mindee/v1/product/resume/resume_v1_document.rbs +69 -0
  428. data/sig/mindee/v1/product/resume/resume_v1_education.rbs +33 -0
  429. data/sig/mindee/v1/product/resume/resume_v1_educations.rbs +17 -0
  430. data/sig/mindee/v1/product/resume/resume_v1_language.rbs +23 -0
  431. data/sig/mindee/v1/product/resume/resume_v1_languages.rbs +17 -0
  432. data/sig/mindee/v1/product/resume/resume_v1_page.rbs +19 -0
  433. data/sig/mindee/v1/product/resume/resume_v1_professional_experience.rbs +37 -0
  434. data/sig/mindee/v1/product/resume/resume_v1_professional_experiences.rbs +17 -0
  435. data/sig/mindee/v1/product/resume/resume_v1_social_networks_url.rbs +23 -0
  436. data/sig/mindee/v1/product/resume/resume_v1_social_networks_urls.rbs +17 -0
  437. data/sig/mindee/v1/product/universal/universal.rbs +16 -0
  438. data/sig/mindee/v1/product/universal/universal_document.rbs +12 -0
  439. data/sig/mindee/v1/product/universal/universal_page.rbs +18 -0
  440. data/sig/mindee/v1/product/universal/universal_prediction.rbs +30 -0
  441. data/sig/mindee/v2/client.rbs +29 -0
  442. data/sig/mindee/v2/file_operation/crop.rbs +10 -0
  443. data/sig/mindee/v2/file_operation/crop_files.rbs +9 -0
  444. data/sig/mindee/v2/file_operation/split.rbs +11 -0
  445. data/sig/mindee/v2/file_operation/split_files.rbs +9 -0
  446. data/sig/mindee/v2/http/api_v2_settings.rbs +27 -0
  447. data/sig/mindee/v2/http/mindee_api_v2.rbs +52 -0
  448. data/sig/mindee/v2/parsing/base_inference.rbs +18 -0
  449. data/sig/mindee/v2/parsing/base_response.rbs +11 -0
  450. data/sig/mindee/v2/parsing/common_response.rbs +12 -0
  451. data/sig/mindee/v2/parsing/error_item.rbs +13 -0
  452. data/sig/mindee/v2/parsing/error_response.rbs +20 -0
  453. data/sig/mindee/v2/parsing/field/base_field.rbs +17 -0
  454. data/sig/mindee/v2/parsing/field/field_confidence.rbs +30 -0
  455. data/sig/mindee/v2/parsing/field/field_location.rbs +16 -0
  456. data/sig/mindee/v2/parsing/field/inference_fields.rbs +20 -0
  457. data/sig/mindee/v2/parsing/field/list_field.rbs +23 -0
  458. data/sig/mindee/v2/parsing/field/object_field.rbs +27 -0
  459. data/sig/mindee/v2/parsing/field/simple_field.rbs +16 -0
  460. data/sig/mindee/v2/parsing/inference_active_options.rbs +26 -0
  461. data/sig/mindee/v2/parsing/inference_file.rbs +17 -0
  462. data/sig/mindee/v2/parsing/inference_job.rbs +13 -0
  463. data/sig/mindee/v2/parsing/inference_model.rbs +12 -0
  464. data/sig/mindee/v2/parsing/job.rbs +24 -0
  465. data/sig/mindee/v2/parsing/job_response.rbs +14 -0
  466. data/sig/mindee/v2/parsing/job_webhook.rbs +19 -0
  467. data/sig/mindee/v2/parsing/rag_metadata.rbs +13 -0
  468. data/sig/mindee/v2/parsing/raw_text.rbs +12 -0
  469. data/sig/mindee/v2/parsing/raw_text_page.rbs +11 -0
  470. data/sig/mindee/v2/parsing/search/pagination_metadata.rbs +20 -0
  471. data/sig/mindee/v2/parsing/search/search_model.rbs +19 -0
  472. data/sig/mindee/v2/parsing/search/search_response.rbs +17 -0
  473. data/sig/mindee/v2/parsing/search_models.rbs +14 -0
  474. data/sig/mindee/v2/product/base_product.rbs +19 -0
  475. data/sig/mindee/v2/product/classification/classification.rbs +10 -0
  476. data/sig/mindee/v2/product/classification/classification_classifier.rbs +15 -0
  477. data/sig/mindee/v2/product/classification/classification_inference.rbs +15 -0
  478. data/sig/mindee/v2/product/classification/classification_response.rbs +23 -0
  479. data/sig/mindee/v2/product/classification/classification_result.rbs +15 -0
  480. data/sig/mindee/v2/product/classification/params/classification_parameters/classification_parameters.rbs +23 -0
  481. data/sig/mindee/v2/product/crop/crop.rbs +10 -0
  482. data/sig/mindee/v2/product/crop/crop_inference.rbs +14 -0
  483. data/sig/mindee/v2/product/crop/crop_item.rbs +18 -0
  484. data/sig/mindee/v2/product/crop/crop_response.rbs +25 -0
  485. data/sig/mindee/v2/product/crop/crop_result.rbs +14 -0
  486. data/sig/mindee/v2/product/crop/params/crop_parameters/crop_parameters.rbs +23 -0
  487. data/sig/mindee/v2/product/extraction/extraction.rbs +15 -0
  488. data/sig/mindee/v2/product/extraction/extraction_inference.rbs +19 -0
  489. data/sig/mindee/v2/product/extraction/extraction_response.rbs +24 -0
  490. data/sig/mindee/v2/product/extraction/extraction_result.rbs +18 -0
  491. data/sig/mindee/v2/product/extraction/params/data_schema.rbs +21 -0
  492. data/sig/mindee/v2/product/extraction/params/data_schema_field.rbs +29 -0
  493. data/sig/mindee/v2/product/extraction/params/data_schema_replace.rbs +21 -0
  494. data/sig/mindee/v2/product/extraction/params/extraction_parameters.rbs +38 -0
  495. data/sig/mindee/v2/product/ocr/ocr.rbs +10 -0
  496. data/sig/mindee/v2/product/ocr/ocr_inference.rbs +14 -0
  497. data/sig/mindee/v2/product/ocr/ocr_page.rbs +15 -0
  498. data/sig/mindee/v2/product/ocr/ocr_response.rbs +23 -0
  499. data/sig/mindee/v2/product/ocr/ocr_result.rbs +14 -0
  500. data/sig/mindee/v2/product/ocr/ocr_word.rbs +15 -0
  501. data/sig/mindee/v2/product/ocr/params/ocr_parameters/ocr_parameters.rbs +24 -0
  502. data/sig/mindee/v2/product/split/params/split_parameters/split_parameters.rbs +23 -0
  503. data/sig/mindee/v2/product/split/split.rbs +10 -0
  504. data/sig/mindee/v2/product/split/split_inference.rbs +14 -0
  505. data/sig/mindee/v2/product/split/split_range.rbs +18 -0
  506. data/sig/mindee/v2/product/split/split_response.rbs +25 -0
  507. data/sig/mindee/v2/product/split/split_result.rbs +14 -0
  508. data/sig/mindee/version.rbs +6 -0
  509. data/sig/mindee.rbs +62 -0
  510. metadata +600 -0
@@ -0,0 +1,329 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../parsing'
4
+ require_relative 'financial_document_v1_line_items'
5
+
6
+ module Mindee
7
+ module V1
8
+ module Product
9
+ module FinancialDocument
10
+ # Financial Document API version 1.14 document data.
11
+ class FinancialDocumentV1Document < Mindee::V1::Parsing::Common::Prediction
12
+ include Mindee::V1::Parsing::Standard
13
+
14
+ # The customer's address used for billing.
15
+ # @return [Mindee::V1::Parsing::Standard::AddressField]
16
+ attr_reader :billing_address
17
+ # The purchase category.
18
+ # @return [Mindee::V1::Parsing::Standard::ClassificationField]
19
+ attr_reader :category
20
+ # The address of the customer.
21
+ # @return [Mindee::V1::Parsing::Standard::AddressField]
22
+ attr_reader :customer_address
23
+ # List of company registration numbers associated to the customer.
24
+ # @return [Array<Mindee::V1::Parsing::Standard::CompanyRegistrationField>]
25
+ attr_reader :customer_company_registrations
26
+ # The customer account number or identifier from the supplier.
27
+ # @return [Mindee::V1::Parsing::Standard::StringField]
28
+ attr_reader :customer_id
29
+ # The name of the customer.
30
+ # @return [Mindee::V1::Parsing::Standard::StringField]
31
+ attr_reader :customer_name
32
+ # The date the purchase was made.
33
+ # @return [Mindee::V1::Parsing::Standard::DateField]
34
+ attr_reader :date
35
+ # The document number or identifier (invoice number or receipt number).
36
+ # @return [Mindee::V1::Parsing::Standard::StringField]
37
+ attr_reader :document_number
38
+ # The type of the document: INVOICE or CREDIT NOTE if it is an invoice, CREDIT CARD RECEIPT or EXPENSE
39
+ # RECEIPT if it is a receipt.
40
+ # @return [Mindee::V1::Parsing::Standard::ClassificationField]
41
+ attr_reader :document_type
42
+ # Document type extended.
43
+ # @return [Mindee::V1::Parsing::Standard::ClassificationField]
44
+ attr_reader :document_type_extended
45
+ # The date on which the payment is due.
46
+ # @return [Mindee::V1::Parsing::Standard::DateField]
47
+ attr_reader :due_date
48
+ # The invoice number or identifier only if document is an invoice.
49
+ # @return [Mindee::V1::Parsing::Standard::StringField]
50
+ attr_reader :invoice_number
51
+ # List of line item present on the document.
52
+ # @return [Mindee::V1::Product::FinancialDocument::FinancialDocumentV1LineItems]
53
+ attr_reader :line_items
54
+ # The locale of the document.
55
+ # @return [Mindee::V1::Parsing::Standard::LocaleField]
56
+ attr_reader :locale
57
+ # The date on which the payment is due / fullfilled.
58
+ # @return [Mindee::V1::Parsing::Standard::DateField]
59
+ attr_reader :payment_date
60
+ # The purchase order number, only if the document is an invoice.
61
+ # @return [Mindee::V1::Parsing::Standard::StringField]
62
+ attr_reader :po_number
63
+ # The receipt number or identifier only if document is a receipt.
64
+ # @return [Mindee::V1::Parsing::Standard::StringField]
65
+ attr_reader :receipt_number
66
+ # List of Reference numbers, including PO number, only if the document is an invoice.
67
+ # @return [Array<Mindee::V1::Parsing::Standard::StringField>]
68
+ attr_reader :reference_numbers
69
+ # The customer's address used for shipping.
70
+ # @return [Mindee::V1::Parsing::Standard::AddressField]
71
+ attr_reader :shipping_address
72
+ # The purchase subcategory for transport, food and shooping.
73
+ # @return [Mindee::V1::Parsing::Standard::ClassificationField]
74
+ attr_reader :subcategory
75
+ # The address of the supplier or merchant.
76
+ # @return [Mindee::V1::Parsing::Standard::AddressField]
77
+ attr_reader :supplier_address
78
+ # List of company registration numbers associated to the supplier.
79
+ # @return [Array<Mindee::V1::Parsing::Standard::CompanyRegistrationField>]
80
+ attr_reader :supplier_company_registrations
81
+ # The email of the supplier or merchant.
82
+ # @return [Mindee::V1::Parsing::Standard::StringField]
83
+ attr_reader :supplier_email
84
+ # The name of the supplier or merchant.
85
+ # @return [Mindee::V1::Parsing::Standard::StringField]
86
+ attr_reader :supplier_name
87
+ # List of payment details associated to the supplier (only for invoices).
88
+ # @return [Array<Mindee::V1::Parsing::Standard::PaymentDetailsField>]
89
+ attr_reader :supplier_payment_details
90
+ # The phone number of the supplier or merchant.
91
+ # @return [Mindee::V1::Parsing::Standard::StringField]
92
+ attr_reader :supplier_phone_number
93
+ # The website URL of the supplier or merchant.
94
+ # @return [Mindee::V1::Parsing::Standard::StringField]
95
+ attr_reader :supplier_website
96
+ # List of all taxes on the document.
97
+ # @return [Mindee::V1::Parsing::Standard::Taxes]
98
+ attr_reader :taxes
99
+ # The time the purchase was made (only for receipts).
100
+ # @return [Mindee::V1::Parsing::Standard::StringField]
101
+ attr_reader :time
102
+ # The total amount of tip and gratuity
103
+ # @return [Mindee::V1::Parsing::Standard::AmountField]
104
+ attr_reader :tip
105
+ # The total amount paid: includes taxes, tips, fees, and other charges.
106
+ # @return [Mindee::V1::Parsing::Standard::AmountField]
107
+ attr_reader :total_amount
108
+ # The net amount paid: does not include taxes, fees, and discounts.
109
+ # @return [Mindee::V1::Parsing::Standard::AmountField]
110
+ attr_reader :total_net
111
+ # The sum of all taxes present on the document.
112
+ # @return [Mindee::V1::Parsing::Standard::AmountField]
113
+ attr_reader :total_tax
114
+
115
+ # @param prediction [Hash]
116
+ # @param page_id [Integer, nil]
117
+ def initialize(prediction, page_id)
118
+ super
119
+ @billing_address = Parsing::Standard::AddressField.new(
120
+ prediction['billing_address'],
121
+ page_id
122
+ )
123
+ @category = Parsing::Standard::ClassificationField.new(
124
+ prediction['category'],
125
+ page_id
126
+ )
127
+ @customer_address = Parsing::Standard::AddressField.new(
128
+ prediction['customer_address'],
129
+ page_id
130
+ )
131
+ @customer_company_registrations = [] # : Array[Parsing::Standard::CompanyRegistrationField]
132
+ prediction['customer_company_registrations'].each do |item|
133
+ @customer_company_registrations.push(Parsing::Standard::CompanyRegistrationField.new(item, page_id))
134
+ end
135
+ @customer_id = Parsing::Standard::StringField.new(
136
+ prediction['customer_id'],
137
+ page_id
138
+ )
139
+ @customer_name = Parsing::Standard::StringField.new(
140
+ prediction['customer_name'],
141
+ page_id
142
+ )
143
+ @date = Parsing::Standard::DateField.new(prediction['date'], page_id)
144
+ @document_number = Parsing::Standard::StringField.new(
145
+ prediction['document_number'],
146
+ page_id
147
+ )
148
+ @document_type = Parsing::Standard::ClassificationField.new(
149
+ prediction['document_type'],
150
+ page_id
151
+ )
152
+ @document_type_extended = Parsing::Standard::ClassificationField.new(
153
+ prediction['document_type_extended'],
154
+ page_id
155
+ )
156
+ @due_date = Parsing::Standard::DateField.new(
157
+ prediction['due_date'],
158
+ page_id
159
+ )
160
+ @invoice_number = Parsing::Standard::StringField.new(
161
+ prediction['invoice_number'],
162
+ page_id
163
+ )
164
+ @line_items = Product::FinancialDocument::FinancialDocumentV1LineItems.new(
165
+ prediction['line_items'], page_id
166
+ )
167
+ @locale = Parsing::Standard::LocaleField.new(
168
+ prediction['locale'],
169
+ page_id
170
+ )
171
+ @payment_date = Parsing::Standard::DateField.new(
172
+ prediction['payment_date'],
173
+ page_id
174
+ )
175
+ @po_number = Parsing::Standard::StringField.new(
176
+ prediction['po_number'],
177
+ page_id
178
+ )
179
+ @receipt_number = Parsing::Standard::StringField.new(
180
+ prediction['receipt_number'],
181
+ page_id
182
+ )
183
+ @reference_numbers = [] # : Array[Parsing::Standard::StringField]
184
+ prediction['reference_numbers'].each do |item|
185
+ @reference_numbers.push(Parsing::Standard::StringField.new(item, page_id))
186
+ end
187
+ @shipping_address = Parsing::Standard::AddressField.new(
188
+ prediction['shipping_address'],
189
+ page_id
190
+ )
191
+ @subcategory = Parsing::Standard::ClassificationField.new(
192
+ prediction['subcategory'],
193
+ page_id
194
+ )
195
+ @supplier_address = Parsing::Standard::AddressField.new(
196
+ prediction['supplier_address'],
197
+ page_id
198
+ )
199
+ @supplier_company_registrations = [] # : Array[Parsing::Standard::CompanyRegistrationField]
200
+ prediction['supplier_company_registrations'].each do |item|
201
+ @supplier_company_registrations.push(Parsing::Standard::CompanyRegistrationField.new(item, page_id))
202
+ end
203
+ @supplier_email = Parsing::Standard::StringField.new(
204
+ prediction['supplier_email'],
205
+ page_id
206
+ )
207
+ @supplier_name = Parsing::Standard::StringField.new(
208
+ prediction['supplier_name'],
209
+ page_id
210
+ )
211
+ @supplier_payment_details = [] # : Array[Parsing::Standard::PaymentDetailsField]
212
+ prediction['supplier_payment_details'].each do |item|
213
+ @supplier_payment_details.push(Parsing::Standard::PaymentDetailsField.new(item, page_id))
214
+ end
215
+ @supplier_phone_number = Parsing::Standard::StringField.new(
216
+ prediction['supplier_phone_number'],
217
+ page_id
218
+ )
219
+ @supplier_website = Parsing::Standard::StringField.new(
220
+ prediction['supplier_website'],
221
+ page_id
222
+ )
223
+ @taxes = Parsing::Standard::Taxes.new(prediction['taxes'], page_id)
224
+ @time = Parsing::Standard::StringField.new(prediction['time'], page_id)
225
+ @tip = Parsing::Standard::AmountField.new(prediction['tip'], page_id)
226
+ @total_amount = Parsing::Standard::AmountField.new(
227
+ prediction['total_amount'],
228
+ page_id
229
+ )
230
+ @total_net = Parsing::Standard::AmountField.new(
231
+ prediction['total_net'],
232
+ page_id
233
+ )
234
+ @total_tax = Parsing::Standard::AmountField.new(
235
+ prediction['total_tax'],
236
+ page_id
237
+ )
238
+ end
239
+
240
+ # @return [String]
241
+ def to_s
242
+ reference_numbers = @reference_numbers.join("\n #{' ' * 19}")
243
+ supplier_payment_details = @supplier_payment_details.join("\n #{' ' * 26}")
244
+ supplier_company_registrations = @supplier_company_registrations.join("\n #{' ' * 32}")
245
+ customer_company_registrations = @customer_company_registrations.join("\n #{' ' * 32}")
246
+ line_items = line_items_to_s
247
+ out_str = String.new
248
+ out_str << "\n:Locale: #{@locale}".rstrip
249
+ out_str << "\n:Invoice Number: #{@invoice_number}".rstrip
250
+ out_str << "\n:Purchase Order Number: #{@po_number}".rstrip
251
+ out_str << "\n:Receipt Number: #{@receipt_number}".rstrip
252
+ out_str << "\n:Document Number: #{@document_number}".rstrip
253
+ out_str << "\n:Reference Numbers: #{reference_numbers}".rstrip
254
+ out_str << "\n:Purchase Date: #{@date}".rstrip
255
+ out_str << "\n:Due Date: #{@due_date}".rstrip
256
+ out_str << "\n:Payment Date: #{@payment_date}".rstrip
257
+ out_str << "\n:Total Net: #{@total_net}".rstrip
258
+ out_str << "\n:Total Amount: #{@total_amount}".rstrip
259
+ out_str << "\n:Taxes:#{@taxes}".rstrip
260
+ out_str << "\n:Supplier Payment Details: #{supplier_payment_details}".rstrip
261
+ out_str << "\n:Supplier Name: #{@supplier_name}".rstrip
262
+ out_str << "\n:Supplier Company Registrations: #{supplier_company_registrations}".rstrip
263
+ out_str << "\n:Supplier Address: #{@supplier_address}".rstrip
264
+ out_str << "\n:Supplier Phone Number: #{@supplier_phone_number}".rstrip
265
+ out_str << "\n:Customer Name: #{@customer_name}".rstrip
266
+ out_str << "\n:Supplier Website: #{@supplier_website}".rstrip
267
+ out_str << "\n:Supplier Email: #{@supplier_email}".rstrip
268
+ out_str << "\n:Customer Company Registrations: #{customer_company_registrations}".rstrip
269
+ out_str << "\n:Customer Address: #{@customer_address}".rstrip
270
+ out_str << "\n:Customer ID: #{@customer_id}".rstrip
271
+ out_str << "\n:Shipping Address: #{@shipping_address}".rstrip
272
+ out_str << "\n:Billing Address: #{@billing_address}".rstrip
273
+ out_str << "\n:Document Type: #{@document_type}".rstrip
274
+ out_str << "\n:Document Type Extended: #{@document_type_extended}".rstrip
275
+ out_str << "\n:Purchase Subcategory: #{@subcategory}".rstrip
276
+ out_str << "\n:Purchase Category: #{@category}".rstrip
277
+ out_str << "\n:Total Tax: #{@total_tax}".rstrip
278
+ out_str << "\n:Tip and Gratuity: #{@tip}".rstrip
279
+ out_str << "\n:Purchase Time: #{@time}".rstrip
280
+ out_str << "\n:Line Items:"
281
+ out_str << line_items
282
+ out_str[1..].to_s
283
+ end
284
+
285
+ private
286
+
287
+ # @param char [String]
288
+ # @return [String]
289
+ def line_items_separator(char)
290
+ out_str = String.new
291
+ out_str << ' '
292
+ out_str << "+#{char * 38}"
293
+ out_str << "+#{char * 14}"
294
+ out_str << "+#{char * 10}"
295
+ out_str << "+#{char * 12}"
296
+ out_str << "+#{char * 14}"
297
+ out_str << "+#{char * 14}"
298
+ out_str << "+#{char * 17}"
299
+ out_str << "+#{char * 12}"
300
+ out_str << '+'
301
+ out_str
302
+ end
303
+
304
+ # @return [String]
305
+ def line_items_to_s
306
+ return '' if @line_items.empty?
307
+
308
+ line_items = @line_items.map(&:to_table_line).join("\n#{line_items_separator('-')}\n ")
309
+ out_str = String.new
310
+ out_str << "\n#{line_items_separator('-')}"
311
+ out_str << "\n |"
312
+ out_str << ' Description |'
313
+ out_str << ' Product code |'
314
+ out_str << ' Quantity |'
315
+ out_str << ' Tax Amount |'
316
+ out_str << ' Tax Rate (%) |'
317
+ out_str << ' Total Amount |'
318
+ out_str << ' Unit of measure |'
319
+ out_str << ' Unit Price |'
320
+ out_str << "\n#{line_items_separator('=')}"
321
+ out_str << "\n #{line_items}"
322
+ out_str << "\n#{line_items_separator('-')}"
323
+ out_str
324
+ end
325
+ end
326
+ end
327
+ end
328
+ end
329
+ end
@@ -0,0 +1,124 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../parsing'
4
+
5
+ module Mindee
6
+ module V1
7
+ module Product
8
+ module FinancialDocument
9
+ # List of line item present on the document.
10
+ class FinancialDocumentV1LineItem < Mindee::V1::Parsing::Standard::FeatureField
11
+ include Mindee::V1::Parsing::Standard
12
+
13
+ # The item description.
14
+ # @return [String]
15
+ attr_reader :description
16
+ # The product code referring to the item.
17
+ # @return [String]
18
+ attr_reader :product_code
19
+ # The item quantity
20
+ # @return [Float]
21
+ attr_reader :quantity
22
+ # The item tax amount.
23
+ # @return [Float]
24
+ attr_reader :tax_amount
25
+ # The item tax rate in percentage.
26
+ # @return [Float]
27
+ attr_reader :tax_rate
28
+ # The item total amount.
29
+ # @return [Float]
30
+ attr_reader :total_amount
31
+ # The item unit of measure.
32
+ # @return [String]
33
+ attr_reader :unit_measure
34
+ # The item unit price.
35
+ # @return [Float]
36
+ attr_reader :unit_price
37
+
38
+ # @param prediction [Hash]
39
+ # @param page_id [Integer, nil]
40
+ def initialize(prediction, page_id)
41
+ super
42
+ @description = prediction['description']
43
+ @product_code = prediction['product_code']
44
+ @quantity = prediction['quantity']
45
+ @tax_amount = prediction['tax_amount']
46
+ @tax_rate = prediction['tax_rate']
47
+ @total_amount = prediction['total_amount']
48
+ @unit_measure = prediction['unit_measure']
49
+ @unit_price = prediction['unit_price']
50
+ @page_id = page_id
51
+ end
52
+
53
+ # @return [Hash]
54
+ def printable_values
55
+ printable = {} # @type var printable: Hash[Symbol, String]
56
+ printable[:description] = format_for_display(@description)
57
+ printable[:product_code] = format_for_display(@product_code)
58
+ printable[:quantity] =
59
+ @quantity.nil? ? '' : Parsing::Standard::BaseField.float_to_string(@quantity)
60
+ printable[:tax_amount] =
61
+ @tax_amount.nil? ? '' : Parsing::Standard::BaseField.float_to_string(@tax_amount)
62
+ printable[:tax_rate] =
63
+ @tax_rate.nil? ? '' : Parsing::Standard::BaseField.float_to_string(@tax_rate)
64
+ printable[:total_amount] =
65
+ @total_amount.nil? ? '' : Parsing::Standard::BaseField.float_to_string(@total_amount)
66
+ printable[:unit_measure] = format_for_display(@unit_measure)
67
+ printable[:unit_price] =
68
+ @unit_price.nil? ? '' : Parsing::Standard::BaseField.float_to_string(@unit_price)
69
+ printable
70
+ end
71
+
72
+ # @return [Hash]
73
+ def table_printable_values
74
+ printable = {} # @type var printable: Hash[Symbol, String]
75
+ printable[:description] = format_for_display(@description, 36)
76
+ printable[:product_code] = format_for_display(@product_code, nil)
77
+ printable[:quantity] =
78
+ @quantity.nil? ? '' : Parsing::Standard::BaseField.float_to_string(@quantity)
79
+ printable[:tax_amount] =
80
+ @tax_amount.nil? ? '' : Parsing::Standard::BaseField.float_to_string(@tax_amount)
81
+ printable[:tax_rate] =
82
+ @tax_rate.nil? ? '' : Parsing::Standard::BaseField.float_to_string(@tax_rate)
83
+ printable[:total_amount] =
84
+ @total_amount.nil? ? '' : Parsing::Standard::BaseField.float_to_string(@total_amount)
85
+ printable[:unit_measure] = format_for_display(@unit_measure, nil)
86
+ printable[:unit_price] =
87
+ @unit_price.nil? ? '' : Parsing::Standard::BaseField.float_to_string(@unit_price)
88
+ printable
89
+ end
90
+
91
+ # @return [String]
92
+ def to_table_line
93
+ printable = table_printable_values
94
+ out_str = String.new
95
+ out_str << format('| %- 37s', printable[:description])
96
+ out_str << format('| %- 13s', printable[:product_code])
97
+ out_str << format('| %- 9s', printable[:quantity])
98
+ out_str << format('| %- 11s', printable[:tax_amount])
99
+ out_str << format('| %- 13s', printable[:tax_rate])
100
+ out_str << format('| %- 13s', printable[:total_amount])
101
+ out_str << format('| %- 16s', printable[:unit_measure])
102
+ out_str << format('| %- 11s', printable[:unit_price])
103
+ out_str << '|'
104
+ end
105
+
106
+ # @return [String]
107
+ def to_s
108
+ printable = printable_values
109
+ out_str = String.new
110
+ out_str << "\n :Description: #{printable[:description]}"
111
+ out_str << "\n :Product code: #{printable[:product_code]}"
112
+ out_str << "\n :Quantity: #{printable[:quantity]}"
113
+ out_str << "\n :Tax Amount: #{printable[:tax_amount]}"
114
+ out_str << "\n :Tax Rate (%): #{printable[:tax_rate]}"
115
+ out_str << "\n :Total Amount: #{printable[:total_amount]}"
116
+ out_str << "\n :Unit of measure: #{printable[:unit_measure]}"
117
+ out_str << "\n :Unit Price: #{printable[:unit_price]}"
118
+ out_str
119
+ end
120
+ end
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'financial_document_v1_line_item'
4
+
5
+ module Mindee
6
+ module V1
7
+ module Product
8
+ module FinancialDocument
9
+ # List of line item present on the document.
10
+ class FinancialDocumentV1LineItems < Array
11
+ # Entries.
12
+ # @return [Array<FinancialDocumentV1LineItem>]
13
+ attr_reader :entries
14
+
15
+ # @param prediction [Array]
16
+ # @param page_id [Integer, nil]
17
+ def initialize(prediction, page_id)
18
+ entries = prediction.map do |entry|
19
+ FinancialDocument::FinancialDocumentV1LineItem.new(entry, page_id)
20
+ end
21
+ super(entries)
22
+ end
23
+
24
+ # Creates a line of rST table-compliant string separators.
25
+ # @param char [String] Character to use as a separator.
26
+ # @return [String]
27
+ def self.line_items_separator(char)
28
+ out_str = String.new
29
+ out_str << "+#{char * 38}"
30
+ out_str << "+#{char * 14}"
31
+ out_str << "+#{char * 10}"
32
+ out_str << "+#{char * 12}"
33
+ out_str << "+#{char * 14}"
34
+ out_str << "+#{char * 14}"
35
+ out_str << "+#{char * 17}"
36
+ out_str << "+#{char * 12}"
37
+ out_str
38
+ end
39
+
40
+ # @return [String]
41
+ def to_s
42
+ return '' if empty?
43
+
44
+ lines = map do |entry|
45
+ "\n #{entry.to_table_line}\n#{self.class.line_items_separator('-')}"
46
+ end.join
47
+ out_str = String.new
48
+ out_str << "\n#{self.class.line_items_separator('-')}\n "
49
+ out_str << ' | Description '
50
+ out_str << ' | Product code'
51
+ out_str << ' | Quantity'
52
+ out_str << ' | Tax Amount'
53
+ out_str << ' | Tax Rate (%)'
54
+ out_str << ' | Total Amount'
55
+ out_str << ' | Unit of measure'
56
+ out_str << ' | Unit Price'
57
+ out_str << " |\n#{self.class.line_items_separator('=')}"
58
+ out_str + lines
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../parsing'
4
+ require_relative 'financial_document_v1_document'
5
+
6
+ module Mindee
7
+ module V1
8
+ module Product
9
+ module FinancialDocument
10
+ # Financial Document API version 1.14 page data.
11
+ class FinancialDocumentV1Page < Mindee::V1::Parsing::Common::Page
12
+ # @param prediction [Hash]
13
+ def initialize(prediction)
14
+ super
15
+ @prediction = if prediction['prediction'].empty?
16
+ nil
17
+ else
18
+ FinancialDocumentV1PagePrediction.new(
19
+ prediction['prediction'],
20
+ prediction['id']
21
+ )
22
+ end
23
+ end
24
+ end
25
+
26
+ # Financial Document V1 page prediction.
27
+ class FinancialDocumentV1PagePrediction < FinancialDocumentV1Document
28
+ # @return [String]
29
+ def to_s
30
+ out_str = String.new
31
+ out_str << "\n#{super}"
32
+ out_str
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../parsing'
4
+ require_relative 'bank_account_details_v1_document'
5
+ require_relative 'bank_account_details_v1_page'
6
+
7
+ module Mindee
8
+ module V1
9
+ module Product
10
+ module FR
11
+ # Bank Account Details module.
12
+ module BankAccountDetails
13
+ # Bank Account Details API version 1 inference prediction.
14
+ class BankAccountDetailsV1 < Mindee::V1::Parsing::Common::Inference
15
+ @endpoint_name = 'bank_account_details'
16
+ @endpoint_version = '1'
17
+ @has_async = false
18
+ @has_sync = true
19
+
20
+ # @param prediction [Hash]
21
+ def initialize(prediction)
22
+ super
23
+ @prediction = BankAccountDetailsV1Document.new(prediction['prediction'], nil)
24
+ @pages = []
25
+ prediction['pages'].each do |page|
26
+ @pages.push(BankAccountDetailsV1Page.new(page))
27
+ end
28
+ end
29
+
30
+ class << self
31
+ # Name of the endpoint for this product.
32
+ # @return [String]
33
+ attr_reader :endpoint_name
34
+ # Version for this product.
35
+ # @return [String]
36
+ attr_reader :endpoint_version
37
+ # Whether this product has access to an asynchronous endpoint.
38
+ # @return [bool]
39
+ attr_reader :has_async
40
+ # Whether this product has access to synchronous endpoint.
41
+ # @return [bool]
42
+ attr_reader :has_sync
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../parsing'
4
+
5
+ module Mindee
6
+ module V1
7
+ module Product
8
+ module FR
9
+ module BankAccountDetails
10
+ # Bank Account Details API version 1.0 document data.
11
+ class BankAccountDetailsV1Document < Mindee::V1::Parsing::Common::Prediction
12
+ include Mindee::V1::Parsing::Standard
13
+
14
+ # The name of the account holder as seen on the document.
15
+ # @return [Mindee::V1::Parsing::Standard::StringField]
16
+ attr_reader :account_holder_name
17
+ # The International Bank Account Number (IBAN).
18
+ # @return [Mindee::V1::Parsing::Standard::StringField]
19
+ attr_reader :iban
20
+ # The bank's SWIFT Business Identifier Code (BIC).
21
+ # @return [Mindee::V1::Parsing::Standard::StringField]
22
+ attr_reader :swift
23
+
24
+ # @param prediction [Hash]
25
+ # @param page_id [Integer, nil]
26
+ def initialize(prediction, page_id)
27
+ super
28
+ @account_holder_name = Parsing::Standard::StringField.new(
29
+ prediction['account_holder_name'],
30
+ page_id
31
+ )
32
+ @iban = Parsing::Standard::StringField.new(prediction['iban'], page_id)
33
+ @swift = Parsing::Standard::StringField.new(prediction['swift'], page_id)
34
+ end
35
+
36
+ # @return [String]
37
+ def to_s
38
+ out_str = String.new
39
+ out_str << "\n:IBAN: #{@iban}".rstrip
40
+ out_str << "\n:Account Holder's Name: #{@account_holder_name}".rstrip
41
+ out_str << "\n:SWIFT Code: #{@swift}".rstrip
42
+ out_str[1..].to_s
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end