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,122 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../parsing'
4
+
5
+ module Mindee
6
+ module V1
7
+ module Product
8
+ module Resume
9
+ # The list of the candidate's professional experiences.
10
+ class ResumeV1ProfessionalExperience < Mindee::V1::Parsing::Standard::FeatureField
11
+ include Mindee::V1::Parsing::Standard
12
+
13
+ # The type of contract for the professional experience.
14
+ # @return [String]
15
+ attr_reader :contract_type
16
+ # The specific department or division within the company.
17
+ # @return [String]
18
+ attr_reader :department
19
+ # The description of the professional experience as written in the document.
20
+ # @return [String]
21
+ attr_reader :description
22
+ # The name of the company or organization.
23
+ # @return [String]
24
+ attr_reader :employer
25
+ # The month when the professional experience ended.
26
+ # @return [String]
27
+ attr_reader :end_month
28
+ # The year when the professional experience ended.
29
+ # @return [String]
30
+ attr_reader :end_year
31
+ # The position or job title held by the candidate.
32
+ # @return [String]
33
+ attr_reader :role
34
+ # The month when the professional experience began.
35
+ # @return [String]
36
+ attr_reader :start_month
37
+ # The year when the professional experience began.
38
+ # @return [String]
39
+ attr_reader :start_year
40
+
41
+ # @param prediction [Hash]
42
+ # @param page_id [Integer, nil]
43
+ def initialize(prediction, page_id)
44
+ super
45
+ @contract_type = prediction['contract_type']
46
+ @department = prediction['department']
47
+ @description = prediction['description']
48
+ @employer = prediction['employer']
49
+ @end_month = prediction['end_month']
50
+ @end_year = prediction['end_year']
51
+ @role = prediction['role']
52
+ @start_month = prediction['start_month']
53
+ @start_year = prediction['start_year']
54
+ @page_id = page_id
55
+ end
56
+
57
+ # @return [Hash]
58
+ def printable_values
59
+ printable = {} # @type var printable: Hash[Symbol, String]
60
+ printable[:contract_type] = format_for_display(@contract_type)
61
+ printable[:department] = format_for_display(@department)
62
+ printable[:description] = format_for_display(@description)
63
+ printable[:employer] = format_for_display(@employer)
64
+ printable[:end_month] = format_for_display(@end_month)
65
+ printable[:end_year] = format_for_display(@end_year)
66
+ printable[:role] = format_for_display(@role)
67
+ printable[:start_month] = format_for_display(@start_month)
68
+ printable[:start_year] = format_for_display(@start_year)
69
+ printable
70
+ end
71
+
72
+ # @return [Hash]
73
+ def table_printable_values
74
+ printable = {} # @type var printable: Hash[Symbol, String]
75
+ printable[:contract_type] = format_for_display(@contract_type, 15)
76
+ printable[:department] = format_for_display(@department, 10)
77
+ printable[:description] = format_for_display(@description, 36)
78
+ printable[:employer] = format_for_display(@employer, 25)
79
+ printable[:end_month] = format_for_display(@end_month, nil)
80
+ printable[:end_year] = format_for_display(@end_year, nil)
81
+ printable[:role] = format_for_display(@role, 20)
82
+ printable[:start_month] = format_for_display(@start_month, nil)
83
+ printable[:start_year] = format_for_display(@start_year, nil)
84
+ printable
85
+ end
86
+
87
+ # @return [String]
88
+ def to_table_line
89
+ printable = table_printable_values
90
+ out_str = String.new
91
+ out_str << format('| %- 16s', printable[:contract_type])
92
+ out_str << format('| %- 11s', printable[:department])
93
+ out_str << format('| %- 37s', printable[:description])
94
+ out_str << format('| %- 26s', printable[:employer])
95
+ out_str << format('| %- 10s', printable[:end_month])
96
+ out_str << format('| %- 9s', printable[:end_year])
97
+ out_str << format('| %- 21s', printable[:role])
98
+ out_str << format('| %- 12s', printable[:start_month])
99
+ out_str << format('| %- 11s', printable[:start_year])
100
+ out_str << '|'
101
+ end
102
+
103
+ # @return [String]
104
+ def to_s
105
+ printable = printable_values
106
+ out_str = String.new
107
+ out_str << "\n :Contract Type: #{printable[:contract_type]}"
108
+ out_str << "\n :Department: #{printable[:department]}"
109
+ out_str << "\n :Description: #{printable[:description]}"
110
+ out_str << "\n :Employer: #{printable[:employer]}"
111
+ out_str << "\n :End Month: #{printable[:end_month]}"
112
+ out_str << "\n :End Year: #{printable[:end_year]}"
113
+ out_str << "\n :Role: #{printable[:role]}"
114
+ out_str << "\n :Start Month: #{printable[:start_month]}"
115
+ out_str << "\n :Start Year: #{printable[:start_year]}"
116
+ out_str
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'resume_v1_social_networks_url'
4
+ require_relative 'resume_v1_language'
5
+ require_relative 'resume_v1_education'
6
+ require_relative 'resume_v1_professional_experience'
7
+ require_relative 'resume_v1_certificate'
8
+
9
+ module Mindee
10
+ module V1
11
+ module Product
12
+ module Resume
13
+ # The list of the candidate's professional experiences.
14
+ class ResumeV1ProfessionalExperiences < Array
15
+ # Entries.
16
+ # @return [Array<ResumeV1ProfessionalExperience>]
17
+ attr_reader :entries
18
+
19
+ # @param prediction [Array]
20
+ # @param page_id [Integer, nil]
21
+ def initialize(prediction, page_id)
22
+ entries = prediction.map do |entry|
23
+ Resume::ResumeV1ProfessionalExperience.new(entry, page_id)
24
+ end
25
+ super(entries)
26
+ end
27
+
28
+ # Creates a line of rST table-compliant string separators.
29
+ # @param char [String] Character to use as a separator.
30
+ # @return [String]
31
+ def self.line_items_separator(char)
32
+ out_str = String.new
33
+ out_str << "+#{char * 17}"
34
+ out_str << "+#{char * 12}"
35
+ out_str << "+#{char * 38}"
36
+ out_str << "+#{char * 27}"
37
+ out_str << "+#{char * 11}"
38
+ out_str << "+#{char * 10}"
39
+ out_str << "+#{char * 22}"
40
+ out_str << "+#{char * 13}"
41
+ out_str << "+#{char * 12}"
42
+ out_str
43
+ end
44
+
45
+ # @return [String]
46
+ def to_s
47
+ return '' if empty?
48
+
49
+ lines = map do |entry|
50
+ "\n #{entry.to_table_line}\n#{self.class.line_items_separator('-')}"
51
+ end.join
52
+ out_str = String.new
53
+ out_str << "\n#{self.class.line_items_separator('-')}\n "
54
+ out_str << ' | Contract Type '
55
+ out_str << ' | Department'
56
+ out_str << ' | Description '
57
+ out_str << ' | Employer '
58
+ out_str << ' | End Month'
59
+ out_str << ' | End Year'
60
+ out_str << ' | Role '
61
+ out_str << ' | Start Month'
62
+ out_str << ' | Start Year'
63
+ out_str << " |\n#{self.class.line_items_separator('=')}"
64
+ out_str + lines
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../parsing'
4
+
5
+ module Mindee
6
+ module V1
7
+ module Product
8
+ module Resume
9
+ # The list of social network profiles of the candidate.
10
+ class ResumeV1SocialNetworksUrl < Mindee::V1::Parsing::Standard::FeatureField
11
+ include Mindee::V1::Parsing::Standard
12
+
13
+ # The name of the social network.
14
+ # @return [String]
15
+ attr_reader :name
16
+ # The URL of the social network.
17
+ # @return [String]
18
+ attr_reader :url
19
+
20
+ # @param prediction [Hash]
21
+ # @param page_id [Integer, nil]
22
+ def initialize(prediction, page_id)
23
+ super
24
+ @name = prediction['name']
25
+ @url = prediction['url']
26
+ @page_id = page_id
27
+ end
28
+
29
+ # @return [Hash]
30
+ def printable_values
31
+ printable = {} # @type var printable: Hash[Symbol, String]
32
+ printable[:name] = format_for_display(@name)
33
+ printable[:url] = format_for_display(@url)
34
+ printable
35
+ end
36
+
37
+ # @return [Hash]
38
+ def table_printable_values
39
+ printable = {} # @type var printable: Hash[Symbol, String]
40
+ printable[:name] = format_for_display(@name, 20)
41
+ printable[:url] = format_for_display(@url, 50)
42
+ printable
43
+ end
44
+
45
+ # @return [String]
46
+ def to_table_line
47
+ printable = table_printable_values
48
+ out_str = String.new
49
+ out_str << format('| %- 21s', printable[:name])
50
+ out_str << format('| %- 51s', printable[:url])
51
+ out_str << '|'
52
+ end
53
+
54
+ # @return [String]
55
+ def to_s
56
+ printable = printable_values
57
+ out_str = String.new
58
+ out_str << "\n :Name: #{printable[:name]}"
59
+ out_str << "\n :URL: #{printable[:url]}"
60
+ out_str
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'resume_v1_social_networks_url'
4
+ require_relative 'resume_v1_language'
5
+ require_relative 'resume_v1_education'
6
+ require_relative 'resume_v1_professional_experience'
7
+ require_relative 'resume_v1_certificate'
8
+
9
+ module Mindee
10
+ module V1
11
+ module Product
12
+ module Resume
13
+ # The list of social network profiles of the candidate.
14
+ class ResumeV1SocialNetworksUrls < Array
15
+ # Entries.
16
+ # @return [Array<ResumeV1SocialNetworksUrl>]
17
+ attr_reader :entries
18
+
19
+ # @param prediction [Array]
20
+ # @param page_id [Integer, nil]
21
+ def initialize(prediction, page_id)
22
+ entries = prediction.map do |entry|
23
+ Resume::ResumeV1SocialNetworksUrl.new(entry, page_id)
24
+ end
25
+ super(entries)
26
+ end
27
+
28
+ # Creates a line of rST table-compliant string separators.
29
+ # @param char [String] Character to use as a separator.
30
+ # @return [String]
31
+ def self.line_items_separator(char)
32
+ out_str = String.new
33
+ out_str << "+#{char * 22}"
34
+ out_str << "+#{char * 52}"
35
+ out_str
36
+ end
37
+
38
+ # @return [String]
39
+ def to_s
40
+ return '' if empty?
41
+
42
+ lines = map do |entry|
43
+ "\n #{entry.to_table_line}\n#{self.class.line_items_separator('-')}"
44
+ end.join
45
+ out_str = String.new
46
+ out_str << "\n#{self.class.line_items_separator('-')}\n "
47
+ out_str << ' | Name '
48
+ out_str << ' | URL '
49
+ out_str << " |\n#{self.class.line_items_separator('=')}"
50
+ out_str + lines
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'universal_document'
4
+ require_relative 'universal_page'
5
+
6
+ module Mindee
7
+ module V1
8
+ module Product
9
+ # Universal product module.
10
+ module Universal
11
+ # Universal Document V1 prediction inference.
12
+ class Universal < Mindee::V1::Parsing::Common::Inference
13
+ @endpoint_name = ''
14
+ @endpoint_version = ''
15
+ @has_sync = true
16
+ @has_async = true
17
+
18
+ # @param prediction [Hash]
19
+ def initialize(prediction)
20
+ super
21
+ @prediction = UniversalDocument.new(prediction['prediction'])
22
+ @pages = [] # : Array[Mindee::V1::Parsing::Common::Page]
23
+ prediction['pages'].each do |page|
24
+ if page.key?('prediction') && !page['prediction'].nil? && !page['prediction'].empty?
25
+ @pages.push(UniversalPage.new(page))
26
+ end
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
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../parsing'
4
+ require_relative 'universal_prediction'
5
+
6
+ module Mindee
7
+ module V1
8
+ module Product
9
+ module Universal
10
+ # Universal Document V1 prediction
11
+ class UniversalDocument < Mindee::V1::Product::Universal::UniversalPrediction
12
+ include Mindee::V1::Parsing::Standard
13
+
14
+ # @param raw_prediction [Hash]
15
+ def initialize(raw_prediction)
16
+ super
17
+ raw_prediction.each do |field_name, field_contents|
18
+ if field_contents.is_a?(Array)
19
+ @fields[field_name] = Parsing::Universal::UniversalListField.new(field_contents)
20
+ elsif field_contents.is_a?(Hash) && Parsing::Universal.universal_object?(field_contents)
21
+ @fields[field_name] = Parsing::Universal::UniversalObjectField.new(field_contents)
22
+ else
23
+ field_contents_str = field_contents.dup
24
+ if field_contents_str.key?('value') && field_contents_str['value'].nil? == false
25
+ field_contents_str['value'] = field_contents_str['value'].to_s
26
+ end
27
+ @fields[field_name] = Mindee::V1::Parsing::Standard::StringField.new(field_contents_str)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../parsing'
4
+ require_relative 'universal_prediction'
5
+
6
+ module Mindee
7
+ module V1
8
+ module Product
9
+ module Universal
10
+ # Universal Document V1 page.
11
+ class UniversalPage < Mindee::V1::Parsing::Common::Page
12
+ # @param prediction [Hash]
13
+ def initialize(prediction)
14
+ super
15
+ @prediction = UniversalPagePrediction.new(
16
+ prediction['prediction'],
17
+ prediction['id']
18
+ )
19
+ end
20
+ end
21
+
22
+ # Universal Document V1 page prediction.
23
+ class UniversalPagePrediction < UniversalPrediction
24
+ include Mindee::V1::Parsing::Standard
25
+ include Mindee::V1::Parsing::Universal
26
+
27
+ def initialize(raw_prediction, page_id = nil)
28
+ super(raw_prediction)
29
+ raw_prediction.each do |field_name, field_contents|
30
+ if field_contents.is_a?(Array)
31
+ @fields[field_name] = Mindee::V1::Parsing::Universal::UniversalListField.new(field_contents, page_id)
32
+ elsif field_contents.is_a?(Hash) && Parsing::Universal.universal_object?(field_contents)
33
+ @fields[field_name] = Mindee::V1::Parsing::Universal::UniversalObjectField.new(field_contents, page_id)
34
+ else
35
+ field_contents_str = field_contents.dup
36
+ if field_contents_str.key?('value') && !field_contents_str['value'].nil?
37
+ field_contents_str['value'] = field_contents_str['value'].to_s
38
+ end
39
+ @fields[field_name] = Mindee::V1::Parsing::Standard::StringField.new(field_contents_str, page_id)
40
+ end
41
+ end
42
+ end
43
+
44
+ # @return [String]
45
+ def to_s
46
+ out_str = String.new
47
+ out_str << "\n#{super}"
48
+ out_str
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,128 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../parsing'
4
+
5
+ module Mindee
6
+ module V1
7
+ module Product
8
+ module Universal
9
+ # Universal Document V1 page.
10
+ class UniversalPrediction < Mindee::V1::Parsing::Common::Prediction
11
+ include Mindee::V1::Parsing::Common
12
+ include Mindee::V1::Parsing::Standard
13
+ include Mindee::V1::Parsing::Universal
14
+
15
+ # All value fields in the document
16
+ # @return [Hash<Symbol, Mindee::V1::Parsing::Universal::UniversalListField>]
17
+ attr_reader :fields
18
+
19
+ def initialize(_ = nil)
20
+ super
21
+ @fields = {} # : Hash[String | Symbol, untyped]
22
+ end
23
+
24
+ # String representation.
25
+ def to_s
26
+ out_str = ''
27
+ pattern = %r{^(\n* *)( {2}):}
28
+ @fields.each do |field_name, field_value|
29
+ str_value = if field_value.is_a?(
30
+ Mindee::V1::Parsing::Universal::UniversalListField
31
+ ) && field_value.values.length.positive?
32
+ generate_field_string(field_name, field_value, pattern)
33
+ else
34
+ field_value.to_s
35
+ end
36
+ out_str += "\n:#{field_name}:"
37
+
38
+ out_str += " #{str_value}".sub(%r{^\s+\n}, "\n") if str_value.length.positive?
39
+ end
40
+ out_str.sub("\n", '')
41
+ end
42
+
43
+ private
44
+
45
+ def generate_field_string(field_name, field_value, pattern)
46
+ values = field_value.values
47
+ return '' if values.nil? || values.empty?
48
+
49
+ str_value = ''
50
+ first_value = values[0]
51
+ str_value += if first_value.is_a?(Parsing::Universal::UniversalObjectField)
52
+ first_value.str_level(1).sub(pattern, '\\1* :')
53
+ else
54
+ "#{first_value.to_s.sub(pattern, '\\1* :')}\n"
55
+ end
56
+ Array(values[1..]).each do |sub_value|
57
+ str_value += if sub_value.is_a?(Parsing::Universal::UniversalObjectField)
58
+ sub_value.str_level(1).sub(pattern, '\\1* :')
59
+ else
60
+ "#{' ' * (field_name.length + 2)} #{sub_value}\n"
61
+ end
62
+ end
63
+
64
+ str_value.rstrip
65
+ end
66
+
67
+ def generate_list_field_string(field_name, field_value, pattern)
68
+ str_value = ''
69
+ field_value.each_value do |sub_value|
70
+ str_value += generate_sub_value_string(field_name, sub_value, pattern)
71
+ end
72
+ str_value.rstrip
73
+ end
74
+
75
+ def generate_sub_value_string(field_name, sub_value, pattern)
76
+ if sub_value.is_a?(Mindee::V1::Parsing::Universal::UniversalObjectField)
77
+ sub_value.str_level(1).gsub(pattern, '\1* :')
78
+ else
79
+ (' ' * (field_name.length + 2)) + "#{sub_value}\n"
80
+ end
81
+ end
82
+
83
+ # Returns a hash of all fields that aren't a collection
84
+ # @return [Hash<String, StringField>]
85
+ def single_fields
86
+ single_fields = {} # : Hash[String | Symbol, untyped]
87
+ @fields.each do |field_name, field_value|
88
+ single_fields[field_name] = field_value if field_value.is_a?(Mindee::V1::Parsing::Standard::StringField)
89
+ end
90
+ single_fields
91
+ end
92
+
93
+ # Returns a hash of all list-like fields
94
+ # @return [Hash<String, UniversalListField>]
95
+ def list_fields
96
+ list_fields = {} # : Hash[String | Symbol, Mindee::V1::Parsing::Universal::UniversalListField]
97
+ @fields.each do |field_name, field_value|
98
+ if field_value.is_a?(Mindee::V1::Parsing::Universal::UniversalListField)
99
+ list_fields[field_name] =
100
+ field_value
101
+ end
102
+ end
103
+ list_fields
104
+ end
105
+
106
+ # Returns a hash of all object-like fields
107
+ # @return [Hash<String, UniversalObjectField>]
108
+ def object_fields
109
+ object_fields = {} # : Hash[String | Symbol, untyped]
110
+ @fields.each do |field_name, field_value|
111
+ if field_value.is_a?(Mindee::V1::Parsing::Universal::UniversalObjectField)
112
+ object_fields[field_name] =
113
+ field_value
114
+ end
115
+ end
116
+ object_fields
117
+ end
118
+
119
+ # Lists names of all top-level field keys
120
+ # @return [Array<String>]
121
+ def list_field_names
122
+ @fields.keys.map(&:to_s)
123
+ end
124
+ end
125
+ end
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'product/barcode_reader/barcode_reader_v1'
4
+ require_relative 'product/cropper/cropper_v1'
5
+ require_relative 'product/financial_document/financial_document_v1'
6
+ require_relative 'product/fr/bank_account_details/bank_account_details_v1'
7
+ require_relative 'product/fr/bank_account_details/bank_account_details_v2'
8
+ require_relative 'product/fr/bank_statement/bank_statement_v2'
9
+ require_relative 'product/fr/id_card/id_card_v1'
10
+ require_relative 'product/fr/id_card/id_card_v2'
11
+ require_relative 'product/international_id/international_id_v2'
12
+ require_relative 'product/invoice/invoice_v4'
13
+ require_relative 'product/invoice_splitter/invoice_splitter_v1'
14
+ require_relative 'product/multi_receipts_detector/multi_receipts_detector_v1'
15
+ require_relative 'product/passport/passport_v1'
16
+ require_relative 'product/receipt/receipt_v5'
17
+ require_relative 'product/resume/resume_v1'
18
+ require_relative 'product/universal/universal'
data/lib/mindee/v1.rb ADDED
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'v1/client'
4
+ require_relative 'v1/extraction' if Mindee::Dependency.all_deps_available?
5
+ require_relative 'v1/http'
6
+ require_relative 'v1/parsing'
7
+ require_relative 'v1/product'