mindee 4.6.0 → 4.7.0.pre.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/README.md +21 -222
  4. data/docs/code_samples/default_v2.txt +28 -0
  5. data/lib/mindee/client.rb +11 -30
  6. data/lib/mindee/client_v2.rb +109 -0
  7. data/lib/mindee/errors/mindee_http_error_v2.rb +26 -0
  8. data/lib/mindee/errors.rb +1 -0
  9. data/lib/mindee/geometry/point.rb +2 -2
  10. data/lib/mindee/geometry/quadrilateral.rb +4 -4
  11. data/lib/mindee/geometry/utils.rb +1 -0
  12. data/lib/mindee/http/api_settings_v2.rb +61 -0
  13. data/lib/mindee/http/endpoint.rb +12 -6
  14. data/lib/mindee/http/http_error_handler.rb +17 -4
  15. data/lib/mindee/http/mindee_api_v2.rb +148 -0
  16. data/lib/mindee/http/response_validation.rb +20 -1
  17. data/lib/mindee/http/workflow_endpoint.rb +2 -2
  18. data/lib/mindee/http.rb +2 -0
  19. data/lib/mindee/image/extracted_image.rb +1 -1
  20. data/lib/mindee/image/image_extractor.rb +10 -10
  21. data/lib/mindee/input/inference_parameters.rb +116 -0
  22. data/lib/mindee/input/local_response.rb +10 -1
  23. data/lib/mindee/input/polling_options.rb +26 -0
  24. data/lib/mindee/input/sources/base64_input_source.rb +2 -2
  25. data/lib/mindee/input/sources/local_input_source.rb +19 -12
  26. data/lib/mindee/input.rb +2 -0
  27. data/lib/mindee/page_options.rb +24 -0
  28. data/lib/mindee/parsing/common/api_request.rb +2 -2
  29. data/lib/mindee/parsing/common/api_response.rb +4 -0
  30. data/lib/mindee/parsing/common/execution.rb +1 -1
  31. data/lib/mindee/parsing/common/extras/extras.rb +2 -2
  32. data/lib/mindee/parsing/common/extras/rag_extra.rb +2 -0
  33. data/lib/mindee/parsing/common/ocr/ocr.rb +4 -6
  34. data/lib/mindee/parsing/common/orientation.rb +2 -2
  35. data/lib/mindee/parsing/common/product.rb +6 -1
  36. data/lib/mindee/parsing/standard/amount_field.rb +2 -2
  37. data/lib/mindee/parsing/standard/feature_field.rb +1 -1
  38. data/lib/mindee/parsing/standard/tax_field.rb +1 -1
  39. data/lib/mindee/parsing/universal/universal_list_field.rb +2 -2
  40. data/lib/mindee/parsing/universal/universal_object_field.rb +6 -3
  41. data/lib/mindee/parsing/v2/common_response.rb +18 -0
  42. data/lib/mindee/parsing/v2/error_response.rb +36 -0
  43. data/lib/mindee/parsing/v2/field/base_field.rb +60 -0
  44. data/lib/mindee/parsing/v2/field/field_confidence.rb +91 -0
  45. data/lib/mindee/parsing/v2/field/field_location.rb +36 -0
  46. data/lib/mindee/parsing/v2/field/inference_fields.rb +96 -0
  47. data/lib/mindee/parsing/v2/field/list_field.rb +88 -0
  48. data/lib/mindee/parsing/v2/field/object_field.rb +102 -0
  49. data/lib/mindee/parsing/v2/field/simple_field.rb +56 -0
  50. data/lib/mindee/parsing/v2/field.rb +9 -0
  51. data/lib/mindee/parsing/v2/inference.rb +50 -0
  52. data/lib/mindee/parsing/v2/inference_file.rb +38 -0
  53. data/lib/mindee/parsing/v2/inference_model.rb +18 -0
  54. data/lib/mindee/parsing/v2/inference_response.rb +30 -0
  55. data/lib/mindee/parsing/v2/inference_result.rb +49 -0
  56. data/lib/mindee/parsing/v2/inference_result_options.rb +21 -0
  57. data/lib/mindee/parsing/v2/job.rb +86 -0
  58. data/lib/mindee/parsing/v2/job_response.rb +30 -0
  59. data/lib/mindee/parsing/v2/job_webhook.rb +60 -0
  60. data/lib/mindee/parsing/v2/raw_text.rb +21 -0
  61. data/lib/mindee/parsing/v2.rb +15 -0
  62. data/lib/mindee/pdf/extracted_pdf.rb +5 -3
  63. data/lib/mindee/pdf/pdf_extractor.rb +11 -7
  64. data/lib/mindee/pdf/pdf_processor.rb +6 -6
  65. data/lib/mindee/pdf/pdf_tools.rb +4 -2
  66. data/lib/mindee/product/universal/universal_prediction.rb +4 -4
  67. data/lib/mindee/version.rb +2 -2
  68. data/lib/mindee.rb +6 -0
  69. data/mindee.gemspec +1 -1
  70. data/sig/custom/mini_magick.rbs +14 -7
  71. data/sig/custom/net_http.rbs +4 -4
  72. data/sig/custom/origami.rbs +9 -4
  73. data/sig/mindee/client.rbs +14 -19
  74. data/sig/mindee/client_v2.rbs +17 -0
  75. data/sig/mindee/errors/mindee_http_error.rbs +6 -5
  76. data/sig/mindee/errors/mindee_http_error_v2.rbs +12 -0
  77. data/sig/mindee/errors/mindee_input_error.rbs +3 -2
  78. data/sig/mindee/geometry/min_max.rbs +4 -3
  79. data/sig/mindee/geometry/point.rbs +5 -6
  80. data/sig/mindee/geometry/polygon.rbs +3 -3
  81. data/sig/mindee/geometry/quadrilateral.rbs +5 -8
  82. data/sig/mindee/geometry/utils.rbs +8 -8
  83. data/sig/mindee/http/api_settings_v2.rbs +23 -0
  84. data/sig/mindee/http/endpoint.rbs +12 -11
  85. data/sig/mindee/http/http_error_handler.rbs +8 -3
  86. data/sig/mindee/http/mindee_api_v2.rbs +18 -0
  87. data/sig/mindee/http/response_validation.rbs +1 -0
  88. data/sig/mindee/http/workflow_endpoint.rbs +1 -1
  89. data/sig/mindee/image/extracted_image.rbs +2 -2
  90. data/sig/mindee/image/image_compressor.rbs +1 -1
  91. data/sig/mindee/image/image_extractor.rbs +5 -5
  92. data/sig/mindee/image/image_utils.rbs +10 -10
  93. data/sig/mindee/input/inference_parameters.rbs +30 -0
  94. data/sig/mindee/input/local_response.rbs +6 -5
  95. data/sig/mindee/input/polling_options.rbs +12 -0
  96. data/sig/mindee/input/sources/base64_input_source.rbs +1 -1
  97. data/sig/mindee/input/sources/local_input_source.rbs +10 -7
  98. data/sig/mindee/input/sources/url_input_source.rbs +1 -1
  99. data/sig/mindee/logging/logger.rbs +2 -0
  100. data/sig/mindee/page_options.rbs +11 -0
  101. data/sig/mindee/parsing/common/api_request.rbs +6 -6
  102. data/sig/mindee/parsing/common/api_response.rbs +2 -2
  103. data/sig/mindee/parsing/common/document.rbs +10 -10
  104. data/sig/mindee/parsing/common/execution.rbs +15 -14
  105. data/sig/mindee/parsing/common/execution_file.rbs +3 -3
  106. data/sig/mindee/parsing/common/extras/cropper_extra.rbs +3 -2
  107. data/sig/mindee/parsing/common/extras/extras.rbs +6 -5
  108. data/sig/mindee/parsing/common/extras/full_text_ocr_extra.rbs +2 -1
  109. data/sig/mindee/parsing/common/inference.rbs +16 -9
  110. data/sig/mindee/parsing/common/job.rbs +2 -2
  111. data/sig/mindee/parsing/common/ocr/mvision_v1.rbs +2 -2
  112. data/sig/mindee/parsing/common/ocr/ocr.rbs +22 -20
  113. data/sig/mindee/parsing/common/orientation.rbs +4 -3
  114. data/sig/mindee/parsing/common/page.rbs +6 -5
  115. data/sig/mindee/parsing/common/product.rbs +4 -4
  116. data/sig/mindee/parsing/common/workflow_response.rbs +8 -4
  117. data/sig/mindee/parsing/standard/abstract_field.rbs +1 -1
  118. data/sig/mindee/parsing/standard/address_field.rbs +1 -1
  119. data/sig/mindee/parsing/standard/amount_field.rbs +6 -4
  120. data/sig/mindee/parsing/standard/base_field.rbs +1 -1
  121. data/sig/mindee/parsing/standard/boolean_field.rbs +1 -1
  122. data/sig/mindee/parsing/standard/company_registration_field.rbs +3 -2
  123. data/sig/mindee/parsing/standard/date_field.rbs +6 -6
  124. data/sig/mindee/parsing/standard/locale_field.rbs +1 -1
  125. data/sig/mindee/parsing/standard/payment_details_field.rbs +7 -6
  126. data/sig/mindee/parsing/standard/position_field.rbs +2 -2
  127. data/sig/mindee/parsing/standard/string_field.rbs +1 -1
  128. data/sig/mindee/parsing/standard/tax_field.rbs +8 -7
  129. data/sig/mindee/parsing/universal/universal_list_field.rbs +4 -5
  130. data/sig/mindee/parsing/universal/universal_object_field.rbs +17 -11
  131. data/sig/mindee/parsing/v2/common_response.rbs +11 -0
  132. data/sig/mindee/parsing/v2/error_response.rbs +16 -0
  133. data/sig/mindee/parsing/v2/field/base_field.rbs +17 -0
  134. data/sig/mindee/parsing/v2/field/field_confidence.rbs +27 -0
  135. data/sig/mindee/parsing/v2/field/field_location.rbs +16 -0
  136. data/sig/mindee/parsing/v2/field/inference_fields.rbs +19 -0
  137. data/sig/mindee/parsing/v2/field/list_field.rbs +22 -0
  138. data/sig/mindee/parsing/v2/field/object_field.rbs +21 -0
  139. data/sig/mindee/parsing/v2/field/simple_field.rbs +16 -0
  140. data/sig/mindee/parsing/v2/inference.rbs +16 -0
  141. data/sig/mindee/parsing/v2/inference_file.rbs +15 -0
  142. data/sig/mindee/parsing/v2/inference_model.rbs +11 -0
  143. data/sig/mindee/parsing/v2/inference_response.rbs +12 -0
  144. data/sig/mindee/parsing/v2/inference_result.rbs +13 -0
  145. data/sig/mindee/parsing/v2/inference_result_options.rbs +11 -0
  146. data/sig/mindee/parsing/v2/job.rbs +22 -0
  147. data/sig/mindee/parsing/v2/job_response.rbs +12 -0
  148. data/sig/mindee/parsing/v2/job_webhook.rbs +17 -0
  149. data/sig/mindee/parsing/v2/raw_text.rbs +12 -0
  150. data/sig/mindee/pdf/extracted_pdf.rbs +6 -6
  151. data/sig/mindee/pdf/pdf_compressor.rbs +4 -4
  152. data/sig/mindee/pdf/pdf_extractor.rbs +8 -7
  153. data/sig/mindee/pdf/pdf_processor.rbs +4 -4
  154. data/sig/mindee/pdf/pdf_tools.rbs +22 -16
  155. data/sig/mindee/product/barcode_reader/barcode_reader_v1.rbs +1 -1
  156. data/sig/mindee/product/barcode_reader/barcode_reader_v1_document.rbs +1 -1
  157. data/sig/mindee/product/barcode_reader/barcode_reader_v1_page.rbs +2 -2
  158. data/sig/mindee/product/bill_of_lading/bill_of_lading_v1.rbs +1 -1
  159. data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_carrier.rbs +2 -2
  160. data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_carrier_item.rbs +3 -3
  161. data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_consignee.rbs +2 -2
  162. data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_document.rbs +1 -1
  163. data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_notify_party.rbs +2 -2
  164. data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_page.rbs +2 -2
  165. data/sig/mindee/product/bill_of_lading/bill_of_lading_v1_shipper.rbs +2 -2
  166. data/sig/mindee/product/business_card/business_card_v1.rbs +1 -1
  167. data/sig/mindee/product/business_card/business_card_v1_document.rbs +1 -1
  168. data/sig/mindee/product/business_card/business_card_v1_page.rbs +2 -2
  169. data/sig/mindee/product/cropper/cropper_v1.rbs +1 -1
  170. data/sig/mindee/product/cropper/cropper_v1_document.rbs +1 -1
  171. data/sig/mindee/product/cropper/cropper_v1_page.rbs +2 -2
  172. data/sig/mindee/product/delivery_note/delivery_note_v1.rbs +1 -1
  173. data/sig/mindee/product/delivery_note/delivery_note_v1_document.rbs +1 -1
  174. data/sig/mindee/product/delivery_note/delivery_note_v1_page.rbs +2 -2
  175. data/sig/mindee/product/driver_license/driver_license_v1.rbs +1 -1
  176. data/sig/mindee/product/driver_license/driver_license_v1_document.rbs +1 -1
  177. data/sig/mindee/product/driver_license/driver_license_v1_page.rbs +2 -2
  178. data/sig/mindee/product/financial_document/financial_document_v1.rbs +1 -1
  179. data/sig/mindee/product/financial_document/financial_document_v1_document.rbs +1 -1
  180. data/sig/mindee/product/financial_document/financial_document_v1_line_item.rbs +3 -3
  181. data/sig/mindee/product/financial_document/financial_document_v1_page.rbs +2 -2
  182. data/sig/mindee/product/fr/bank_account_details/bank_account_details_v1.rbs +1 -1
  183. data/sig/mindee/product/fr/bank_account_details/bank_account_details_v1_document.rbs +1 -1
  184. data/sig/mindee/product/fr/bank_account_details/bank_account_details_v1_page.rbs +2 -2
  185. data/sig/mindee/product/fr/bank_account_details/bank_account_details_v2.rbs +1 -1
  186. data/sig/mindee/product/fr/bank_account_details/bank_account_details_v2_bban.rbs +2 -2
  187. data/sig/mindee/product/fr/bank_account_details/bank_account_details_v2_document.rbs +1 -1
  188. data/sig/mindee/product/fr/bank_account_details/bank_account_details_v2_page.rbs +2 -2
  189. data/sig/mindee/product/fr/bank_statement/bank_statement_v2.rbs +1 -1
  190. data/sig/mindee/product/fr/bank_statement/bank_statement_v2_document.rbs +1 -1
  191. data/sig/mindee/product/fr/bank_statement/bank_statement_v2_page.rbs +2 -2
  192. data/sig/mindee/product/fr/bank_statement/bank_statement_v2_transaction.rbs +3 -3
  193. data/sig/mindee/product/fr/carte_grise/carte_grise_v1.rbs +1 -1
  194. data/sig/mindee/product/fr/carte_grise/carte_grise_v1_document.rbs +1 -1
  195. data/sig/mindee/product/fr/carte_grise/carte_grise_v1_page.rbs +2 -2
  196. data/sig/mindee/product/fr/energy_bill/energy_bill_v1.rbs +1 -1
  197. data/sig/mindee/product/fr/energy_bill/energy_bill_v1_document.rbs +1 -1
  198. data/sig/mindee/product/fr/energy_bill/energy_bill_v1_energy_consumer.rbs +2 -2
  199. data/sig/mindee/product/fr/energy_bill/energy_bill_v1_energy_supplier.rbs +2 -2
  200. data/sig/mindee/product/fr/energy_bill/energy_bill_v1_energy_usage.rbs +3 -3
  201. data/sig/mindee/product/fr/energy_bill/energy_bill_v1_meter_detail.rbs +2 -2
  202. data/sig/mindee/product/fr/energy_bill/energy_bill_v1_page.rbs +2 -2
  203. data/sig/mindee/product/fr/energy_bill/energy_bill_v1_subscription.rbs +3 -3
  204. data/sig/mindee/product/fr/energy_bill/energy_bill_v1_taxes_and_contribution.rbs +3 -3
  205. data/sig/mindee/product/fr/health_card/health_card_v1.rbs +1 -1
  206. data/sig/mindee/product/fr/health_card/health_card_v1_document.rbs +1 -1
  207. data/sig/mindee/product/fr/health_card/health_card_v1_page.rbs +2 -2
  208. data/sig/mindee/product/fr/id_card/id_card_v1.rbs +1 -1
  209. data/sig/mindee/product/fr/id_card/id_card_v1_document.rbs +1 -1
  210. data/sig/mindee/product/fr/id_card/id_card_v1_page.rbs +2 -2
  211. data/sig/mindee/product/fr/id_card/id_card_v2.rbs +1 -1
  212. data/sig/mindee/product/fr/id_card/id_card_v2_document.rbs +1 -1
  213. data/sig/mindee/product/fr/id_card/id_card_v2_page.rbs +2 -2
  214. data/sig/mindee/product/fr/payslip/payslip_v2.rbs +1 -1
  215. data/sig/mindee/product/fr/payslip/payslip_v2_bank_account_detail.rbs +2 -2
  216. data/sig/mindee/product/fr/payslip/payslip_v2_document.rbs +1 -1
  217. data/sig/mindee/product/fr/payslip/payslip_v2_employee.rbs +2 -2
  218. data/sig/mindee/product/fr/payslip/payslip_v2_employer.rbs +2 -2
  219. data/sig/mindee/product/fr/payslip/payslip_v2_employment.rbs +2 -2
  220. data/sig/mindee/product/fr/payslip/payslip_v2_page.rbs +2 -2
  221. data/sig/mindee/product/fr/payslip/payslip_v2_pay_detail.rbs +2 -2
  222. data/sig/mindee/product/fr/payslip/payslip_v2_pay_period.rbs +2 -2
  223. data/sig/mindee/product/fr/payslip/payslip_v2_pto.rbs +2 -2
  224. data/sig/mindee/product/fr/payslip/payslip_v2_salary_detail.rbs +3 -3
  225. data/sig/mindee/product/fr/payslip/payslip_v3.rbs +1 -1
  226. data/sig/mindee/product/fr/payslip/payslip_v3_bank_account_detail.rbs +2 -2
  227. data/sig/mindee/product/fr/payslip/payslip_v3_document.rbs +1 -1
  228. data/sig/mindee/product/fr/payslip/payslip_v3_employee.rbs +2 -2
  229. data/sig/mindee/product/fr/payslip/payslip_v3_employer.rbs +2 -2
  230. data/sig/mindee/product/fr/payslip/payslip_v3_employment.rbs +2 -2
  231. data/sig/mindee/product/fr/payslip/payslip_v3_page.rbs +2 -2
  232. data/sig/mindee/product/fr/payslip/payslip_v3_paid_time_off.rbs +3 -3
  233. data/sig/mindee/product/fr/payslip/payslip_v3_pay_detail.rbs +2 -2
  234. data/sig/mindee/product/fr/payslip/payslip_v3_pay_period.rbs +2 -2
  235. data/sig/mindee/product/fr/payslip/payslip_v3_salary_detail.rbs +3 -3
  236. data/sig/mindee/product/ind/indian_passport/indian_passport_v1.rbs +1 -1
  237. data/sig/mindee/product/ind/indian_passport/indian_passport_v1_document.rbs +1 -1
  238. data/sig/mindee/product/ind/indian_passport/indian_passport_v1_page.rbs +2 -2
  239. data/sig/mindee/product/international_id/international_id_v2.rbs +1 -1
  240. data/sig/mindee/product/international_id/international_id_v2_document.rbs +1 -1
  241. data/sig/mindee/product/international_id/international_id_v2_page.rbs +2 -2
  242. data/sig/mindee/product/invoice/invoice_v4.rbs +1 -1
  243. data/sig/mindee/product/invoice/invoice_v4_document.rbs +1 -1
  244. data/sig/mindee/product/invoice/invoice_v4_line_item.rbs +3 -3
  245. data/sig/mindee/product/invoice/invoice_v4_page.rbs +2 -2
  246. data/sig/mindee/product/invoice_splitter/invoice_splitter_v1.rbs +1 -1
  247. data/sig/mindee/product/invoice_splitter/invoice_splitter_v1_document.rbs +1 -1
  248. data/sig/mindee/product/invoice_splitter/invoice_splitter_v1_invoice_page_group.rbs +3 -3
  249. data/sig/mindee/product/invoice_splitter/invoice_splitter_v1_page.rbs +2 -2
  250. data/sig/mindee/product/multi_receipts_detector/multi_receipts_detector_v1.rbs +1 -1
  251. data/sig/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_document.rbs +1 -1
  252. data/sig/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_page.rbs +2 -2
  253. data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1.rbs +1 -1
  254. data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_added_sugar.rbs +2 -2
  255. data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_calorie.rbs +2 -2
  256. data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_cholesterol.rbs +2 -2
  257. data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_dietary_fiber.rbs +2 -2
  258. data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_document.rbs +1 -1
  259. data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_nutrient.rbs +3 -3
  260. data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_page.rbs +2 -2
  261. data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_protein.rbs +2 -2
  262. data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_saturated_fat.rbs +2 -2
  263. data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_serving_size.rbs +2 -2
  264. data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_sodium.rbs +2 -2
  265. data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_total_carbohydrate.rbs +2 -2
  266. data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_total_fat.rbs +2 -2
  267. data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_total_sugar.rbs +2 -2
  268. data/sig/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_trans_fat.rbs +2 -2
  269. data/sig/mindee/product/passport/passport_v1.rbs +1 -1
  270. data/sig/mindee/product/passport/passport_v1_document.rbs +1 -1
  271. data/sig/mindee/product/passport/passport_v1_page.rbs +2 -2
  272. data/sig/mindee/product/receipt/receipt_v5.rbs +1 -1
  273. data/sig/mindee/product/receipt/receipt_v5_document.rbs +1 -1
  274. data/sig/mindee/product/receipt/receipt_v5_line_item.rbs +3 -3
  275. data/sig/mindee/product/receipt/receipt_v5_page.rbs +2 -2
  276. data/sig/mindee/product/resume/resume_v1.rbs +1 -1
  277. data/sig/mindee/product/resume/resume_v1_certificate.rbs +3 -3
  278. data/sig/mindee/product/resume/resume_v1_document.rbs +1 -1
  279. data/sig/mindee/product/resume/resume_v1_education.rbs +3 -3
  280. data/sig/mindee/product/resume/resume_v1_language.rbs +3 -3
  281. data/sig/mindee/product/resume/resume_v1_page.rbs +2 -2
  282. data/sig/mindee/product/resume/resume_v1_professional_experience.rbs +3 -3
  283. data/sig/mindee/product/resume/resume_v1_social_networks_url.rbs +3 -3
  284. data/sig/mindee/product/universal/universal.rbs +5 -5
  285. data/sig/mindee/product/universal/universal_document.rbs +1 -1
  286. data/sig/mindee/product/universal/universal_page.rbs +2 -2
  287. data/sig/mindee/product/universal/universal_prediction.rbs +5 -5
  288. data/sig/mindee/product/us/bank_check/bank_check_v1.rbs +1 -1
  289. data/sig/mindee/product/us/bank_check/bank_check_v1_document.rbs +1 -1
  290. data/sig/mindee/product/us/bank_check/bank_check_v1_page.rbs +2 -2
  291. data/sig/mindee/product/us/healthcare_card/healthcare_card_v1.rbs +1 -1
  292. data/sig/mindee/product/us/healthcare_card/healthcare_card_v1_copay.rbs +3 -3
  293. data/sig/mindee/product/us/healthcare_card/healthcare_card_v1_document.rbs +1 -1
  294. data/sig/mindee/product/us/healthcare_card/healthcare_card_v1_page.rbs +2 -2
  295. data/sig/mindee/product/us/us_mail/us_mail_v2.rbs +1 -1
  296. data/sig/mindee/product/us/us_mail/us_mail_v2_document.rbs +1 -1
  297. data/sig/mindee/product/us/us_mail/us_mail_v2_page.rbs +2 -2
  298. data/sig/mindee/product/us/us_mail/us_mail_v2_recipient_address.rbs +3 -3
  299. data/sig/mindee/product/us/us_mail/us_mail_v2_sender_address.rbs +2 -2
  300. data/sig/mindee/product/us/us_mail/us_mail_v3.rbs +1 -1
  301. data/sig/mindee/product/us/us_mail/us_mail_v3_document.rbs +1 -1
  302. data/sig/mindee/product/us/us_mail/us_mail_v3_page.rbs +2 -2
  303. data/sig/mindee/product/us/us_mail/us_mail_v3_recipient_address.rbs +3 -3
  304. data/sig/mindee/product/us/us_mail/us_mail_v3_sender_address.rbs +2 -2
  305. data/sig/mindee/product/us/w9/w9_v1.rbs +1 -1
  306. data/sig/mindee/product/us/w9/w9_v1_document.rbs +1 -1
  307. data/sig/mindee/product/us/w9/w9_v1_page.rbs +2 -2
  308. data/sig/mindee/version.rbs +2 -2
  309. metadata +61 -6
@@ -0,0 +1,102 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base_field'
4
+ require_relative 'inference_fields'
5
+
6
+ module Mindee
7
+ module Parsing
8
+ module V2
9
+ module Field
10
+ # A field containing a nested set of inference fields.
11
+ class ObjectField < BaseField
12
+ # @return [InferenceFields] Fields contained in the object.
13
+ attr_reader :fields
14
+
15
+ # @param raw_prediction [Hash] Raw server response hash.
16
+ # @param indent_level [Integer] Level of indentation for rst display.
17
+ def initialize(raw_prediction, indent_level = 0)
18
+ super
19
+
20
+ inner_fields = raw_prediction.fetch('fields', raw_prediction)
21
+ @fields = InferenceFields.new(inner_fields, @indent_level + 1)
22
+ end
23
+
24
+ # String representation of the object field.
25
+ # @return [String] String representation with newline prefix.
26
+ def to_s
27
+ return "\n" unless @fields && !@fields.empty?
28
+
29
+ "\n#{@fields.to_s(1)}"
30
+ end
31
+
32
+ # String representation suitable for list display.
33
+ # @return [String] String representation without leading spaces.
34
+ def to_s_from_list
35
+ return '' if @fields.nil?
36
+ return '' unless @fields && !@fields.empty?
37
+
38
+ field_str = @fields.to_s(2)
39
+ field_str.length > 4 ? (field_str[4..] || '') : ''
40
+ end
41
+
42
+ # String representation of a single object field
43
+ # @return [String] Multi-line string with proper indentation.
44
+ def single_str
45
+ return '' unless @fields && !@fields.empty?
46
+
47
+ out_str = ''
48
+ indent = ' ' * @indent_level
49
+
50
+ @fields.each do |field_key, field_value|
51
+ value_str = field_value && !field_value.to_s.empty? ? field_value.to_s : ''
52
+ out_str += "\n#{indent} :#{field_key}: #{value_str}"
53
+ end
54
+
55
+ out_str
56
+ end
57
+
58
+ # String representation for multi-object display
59
+ # @return [String] Formatted string for list context.
60
+ def multi_str
61
+ return '' unless @fields && !@fields.empty?
62
+
63
+ out_str = ''
64
+ indent = ' ' * @indent_level
65
+ first = true
66
+
67
+ @fields.each do |field_key, field_value|
68
+ value_str = field_value ? field_value.to_s : ''
69
+
70
+ if first
71
+ out_str += "#{indent}:#{field_key}: #{value_str}"
72
+ first = false
73
+ else
74
+ out_str += "\n#{indent} :#{field_key}: #{value_str}"
75
+ end
76
+ end
77
+
78
+ out_str
79
+ end
80
+
81
+ # Allow dot notation access to nested fields.
82
+ # @param method_name [Symbol] The method name (field key).
83
+ # @return [ObjectField, nil] The field or nil if not found.
84
+ def method_missing(method_name, ...)
85
+ if @fields.respond_to?(method_name)
86
+ @fields.send(method_name, ...)
87
+ else
88
+ super
89
+ end
90
+ end
91
+
92
+ # Check if method_missing should handle the method.
93
+ # @param method_name [Symbol] The method name.
94
+ # @return [Boolean] True if the method should be handled.
95
+ def respond_to_missing?(method_name, include_private = false)
96
+ @fields.respond_to?(method_name) || super
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base_field'
4
+
5
+ module Mindee
6
+ module Parsing
7
+ module V2
8
+ module Field
9
+ # A simple field with a scalar value.
10
+ class SimpleField < BaseField
11
+ # @return [String, Integer, Float, Boolean, nil] Value contained in the field.
12
+ attr_reader :value
13
+
14
+ # @param server_response [Hash] Raw server response hash.
15
+ # @param indent_level [Integer] Level of indentation for rst display.
16
+ def initialize(server_response, indent_level = 0)
17
+ super
18
+ @value = server_response.key?('value') ? server_response['value'] : nil
19
+ end
20
+
21
+ # String representation of the field value.
22
+ # @return [String] String representation of the value.
23
+ def to_s
24
+ return '' if @value.nil?
25
+
26
+ if @value.is_a?(TrueClass) || @value.is_a?(FalseClass)
27
+ @value ? 'True' : 'False'
28
+ elsif @value.is_a?(Integer) || @value.is_a?(Float)
29
+ # NOTE: explicitly typing because steep is very, very dumb
30
+ num = @value # @type var num: Integer | Float
31
+ format_numeric_value(num)
32
+ else
33
+ @value.to_s
34
+ end
35
+ end
36
+
37
+ private
38
+
39
+ # Format numeric values to display '.0' in string reps.
40
+ # @param value [Numeric] The numeric value to format.
41
+ # @return [String] Formatted numeric string.
42
+ def format_numeric_value(value)
43
+ float_value = value.to_f
44
+
45
+ if float_value == float_value.to_i
46
+ format('%.1f', float_value)
47
+ else
48
+ formatted = format('%.5f', float_value)
49
+ formatted.sub(%r{\.?0+$}, '')
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'field/base_field'
4
+ require_relative 'field/field_confidence'
5
+ require_relative 'field/field_location'
6
+ require_relative 'field/inference_fields'
7
+ require_relative 'field/list_field'
8
+ require_relative 'field/object_field'
9
+ require_relative 'field/simple_field'
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'inference_model'
4
+ require_relative 'inference_file'
5
+ require_relative 'inference_result'
6
+
7
+ module Mindee
8
+ module Parsing
9
+ module V2
10
+ # Complete data returned by an inference request.
11
+ class Inference
12
+ # @return [InferenceModel] Information about the model used.
13
+ attr_reader :model
14
+ # @return [InferenceFile] Information about the processed file.
15
+ attr_reader :file
16
+ # @return [InferenceResult] Result contents.
17
+ attr_reader :result
18
+ # @return [String] Identifier of the inference (when provided by API).
19
+ attr_reader :id
20
+
21
+ # @param server_response [Hash] Hash representation of the JSON returned by the service.
22
+ def initialize(server_response)
23
+ raise ArgumentError, 'server_response must be a Hash' unless server_response.is_a?(Hash)
24
+
25
+ @model = InferenceModel.new(server_response['model'])
26
+ @file = InferenceFile.new(server_response['file'])
27
+ @result = InferenceResult.new(server_response['result'])
28
+
29
+ @id = server_response['id']
30
+ end
31
+
32
+ # String representation.
33
+ # @return [String]
34
+ def to_s
35
+ [
36
+ 'Inference',
37
+ '#########',
38
+ 'Model',
39
+ '=====',
40
+ ":ID: #{@model.id}",
41
+ '',
42
+ @file.to_s,
43
+ @result.to_s,
44
+ '',
45
+ ].join("\n")
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mindee
4
+ module Parsing
5
+ module V2
6
+ # Information about a file returned in an inference.
7
+ class InferenceFile
8
+ # @return [String] File name.
9
+ attr_reader :name
10
+ # @return [String, nil] Optional alias for the file.
11
+ attr_reader :file_alias
12
+ # @return [Integer] Page count.
13
+ attr_reader :page_count
14
+ # @return [String] MIME type.
15
+ attr_reader :mime_type
16
+
17
+ # @param server_response [Hash] Raw JSON parsed into a Hash.
18
+ def initialize(server_response)
19
+ @name = server_response['name']
20
+ @file_alias = server_response['alias']
21
+ @page_count = server_response['page_count']
22
+ @mime_type = server_response['mime_type']
23
+ end
24
+
25
+ # String representation.
26
+ # @return [String]
27
+ def to_s
28
+ "File\n" \
29
+ "====\n" \
30
+ ":Name: #{@name}\n" \
31
+ ":Alias:#{" #{@file_alias}" if @file_alias}\n" \
32
+ ":Page Count: #{@page_count}\n" \
33
+ ":MIME Type: #{@mime_type}\n"
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mindee
4
+ module Parsing
5
+ module V2
6
+ # ID of the model that produced the inference.
7
+ class InferenceModel
8
+ # @return [String] Identifier of the model.
9
+ attr_reader :id
10
+
11
+ # @param server_response [Hash] Raw JSON parsed into a Hash.
12
+ def initialize(server_response)
13
+ @id = server_response['id']
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'common_response'
4
+ require_relative 'inference'
5
+
6
+ module Mindee
7
+ module Parsing
8
+ module V2
9
+ # HTTP response wrapper that embeds a V2 Inference.
10
+ class InferenceResponse < CommonResponse
11
+ # @return [Inference] Parsed inference payload.
12
+ attr_reader :inference
13
+
14
+ # @param server_response [Hash] Hash parsed from the API JSON response.
15
+ def initialize(server_response)
16
+ # CommonResponse takes care of the generic metadata (status, etc.)
17
+ super
18
+
19
+ @inference = Inference.new(server_response['inference'])
20
+ end
21
+
22
+ # String representation.
23
+ # @return [String]
24
+ def to_s
25
+ @inference.to_s
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'field/inference_fields'
4
+ require_relative 'inference_result_options'
5
+
6
+ module Mindee
7
+ module Parsing
8
+ module V2
9
+ # Wrapper for the result of a V2 inference request.
10
+ class InferenceResult
11
+ # @return [Mindee::Parsing::V2::Field::InferenceFields] Fields produced by the model.
12
+ attr_reader :fields
13
+ # @return [Mindee::Parsing::V2::InferenceResultOptions, nil] Optional extra data.
14
+ attr_reader :options
15
+
16
+ # @param server_response [Hash] Hash version of the JSON returned by the API.
17
+ def initialize(server_response)
18
+ raise ArgumentError, 'server_response must be a Hash' unless server_response.is_a?(Hash)
19
+
20
+ @fields = Field::InferenceFields.new(server_response['fields'])
21
+
22
+ return unless server_response.key?('options') && server_response['options']
23
+
24
+ @options = InferenceResultOptions.new(server_response['options'])
25
+ end
26
+
27
+ # String representation.
28
+ # @return [String]
29
+ def to_s
30
+ parts = [
31
+ 'Fields',
32
+ '======',
33
+ @fields.to_s,
34
+ ]
35
+
36
+ if @options
37
+ parts += [
38
+ 'Options',
39
+ '=======',
40
+ @options.to_s,
41
+ ]
42
+ end
43
+
44
+ parts.join("\n")
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'raw_text'
4
+
5
+ module Mindee
6
+ module Parsing
7
+ module V2
8
+ # Optional data returned alongside an inference.
9
+ class InferenceResultOptions
10
+ # @return [Array<RawText>] Collection of raw texts per page.
11
+ attr_reader :raw_texts
12
+
13
+ # @param server_response [Hash] Raw JSON parsed into a Hash.
14
+ def initialize(server_response)
15
+ raw = server_response['raw_texts']
16
+ @raw_texts = raw.is_a?(Array) ? raw.map { |rt| RawText.new(rt) } : []
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'date'
4
+ require_relative 'error_response'
5
+ require_relative 'job_webhook'
6
+
7
+ module Mindee
8
+ module Parsing
9
+ module V2
10
+ # Metadata returned when polling a job (asynchronous request).
11
+ class Job
12
+ # @return [String] Unique job identifier.
13
+ attr_reader :id
14
+ # @return [DateTime, nil] Timestamp of creation.
15
+ attr_reader :created_at
16
+ # @return [String] Identifier of the model used.
17
+ attr_reader :model_id
18
+ # @return [String] Name of the processed file.
19
+ attr_reader :filename
20
+ # @return [String] Optional alias for the file.
21
+ attr_reader :alias
22
+ # @return [String, nil] Current status (submitted, processing, done, …).
23
+ attr_reader :status
24
+ # @return [String] URL to query for updated status.
25
+ attr_reader :polling_url
26
+ # @return [String, nil] URL that redirects to the final result once ready.
27
+ attr_reader :result_url
28
+ # @return [Array<JobWebhook>] Webhooks triggered by the job.
29
+ attr_reader :webhooks
30
+ # @return [ErrorResponse, nil] Error details when the job failed.
31
+ attr_reader :error
32
+
33
+ # @param server_response [Hash] Parsed JSON payload from the API.
34
+ def initialize(server_response)
35
+ raise ArgumentError, 'server_response must be a Hash' unless server_response.is_a?(Hash)
36
+
37
+ @id = server_response['id']
38
+ @status = server_response['status'] if server_response.key?('status')
39
+ unless server_response['error'].nil? || server_response['error'].empty?
40
+ @error = ErrorResponse.new(server_response['error'])
41
+ end
42
+ @created_at = Time.iso8601(server_response['created_at'])
43
+ @model_id = server_response['model_id']
44
+ @polling_url = server_response['polling_url']
45
+ @filename = server_response['filename']
46
+ @result_url = server_response['result_url']
47
+ @alias = server_response['alias']
48
+ @webhooks = []
49
+ server_response['webhooks'].each do |webhook|
50
+ @webhooks.push JobWebhook.new(webhook)
51
+ end
52
+ end
53
+
54
+ # String representation.
55
+ # @return [String]
56
+ def to_s
57
+ lines = [
58
+ 'Job',
59
+ '###',
60
+ ":ID: #{@id}",
61
+ ":CreatedAt: #{@created_at}",
62
+ ":ModelID: #{@model_id}",
63
+ ":Filename: #{@filename}",
64
+ ":Alias: #{@alias}",
65
+ ":Status: #{@status}",
66
+ ":PollingURL: #{@polling_url}",
67
+ ":ResultURL: #{@result_url}",
68
+ ]
69
+
70
+ lines << @error.to_s if @error
71
+
72
+ unless @webhooks.empty?
73
+ lines += [
74
+ '',
75
+ 'Webhooks',
76
+ '=========',
77
+ @webhooks.map(&:to_s).join("\n\n"),
78
+ ]
79
+ end
80
+
81
+ lines.join("\n")
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'common_response'
4
+ require_relative 'job'
5
+
6
+ module Mindee
7
+ module Parsing
8
+ module V2
9
+ # HTTP response wrapper that embeds a V2 job.
10
+ class JobResponse < CommonResponse
11
+ # @return [Job] Parsed job payload.
12
+ attr_reader :job
13
+
14
+ # @param server_response [Hash] Hash parsed from the API JSON response.
15
+ def initialize(server_response)
16
+ # CommonResponse takes care of the generic metadata (status, etc.)
17
+ super
18
+
19
+ @job = Job.new(server_response['job'])
20
+ end
21
+
22
+ # String representation.
23
+ # @return [String]
24
+ def to_s
25
+ @job.to_s
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,60 @@
1
+ # lib/mindee/parsing/v2/job_response_webhook.rb
2
+ # frozen_string_literal: true
3
+
4
+ require 'date'
5
+ require_relative 'error_response'
6
+
7
+ module Mindee
8
+ module Parsing
9
+ module V2
10
+ # Information about a webhook created for a job response.
11
+ class JobWebhook
12
+ # @return [String] Identifier of the webhook.
13
+ attr_reader :id
14
+ # @return [DateTime, nil] Creation timestamp (or +nil+ when absent).
15
+ attr_reader :created_at
16
+ # @return [String] Webhook status.
17
+ attr_reader :status
18
+ # @return [ErrorResponse, nil] Error information when something failed.
19
+ attr_reader :error
20
+
21
+ # @param server_response [Hash] Raw JSON parsed into a Hash.
22
+ def initialize(server_response)
23
+ @id = server_response['id']
24
+ @created_at = parse_date(server_response['created_at'])
25
+ @status = server_response['status']
26
+ @error = ErrorResponse.new(server_response['error']) if server_response.key?('error')
27
+ end
28
+
29
+ # RST display.
30
+ #
31
+ # @return [String]
32
+ def to_s
33
+ parts = [
34
+ 'JobResponseWebhook',
35
+ '##################',
36
+ ":ID: #{@id}",
37
+ ":CreatedAt: #{@created_at}",
38
+ ":Status: #{@status}",
39
+ ]
40
+
41
+ parts << @error.to_s if @error
42
+ parts.join("\n")
43
+ end
44
+
45
+ private
46
+
47
+ # Safely parse an ISO-8601 date/time string to DateTime.
48
+ # @param str [String, nil] The date string.
49
+ # @return [DateTime, nil]
50
+ def parse_date(str)
51
+ return nil if str.to_s.empty?
52
+
53
+ DateTime.iso8601(str || '')
54
+ rescue ArgumentError
55
+ nil
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mindee
4
+ module Parsing
5
+ module V2
6
+ # Raw text extracted from a given page.
7
+ class RawText
8
+ # @return [Integer] Page number where the text was found.
9
+ attr_reader :page
10
+ # @return [String] Text content.
11
+ attr_reader :content
12
+
13
+ # @param server_response [Hash] Raw JSON parsed into a Hash.
14
+ def initialize(server_response)
15
+ @page = server_response['page']
16
+ @content = server_response['content']
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'v2/common_response'
4
+ require_relative 'v2/error_response'
5
+ require_relative 'v2/field'
6
+ require_relative 'v2/inference'
7
+ require_relative 'v2/inference_file'
8
+ require_relative 'v2/inference_model'
9
+ require_relative 'v2/inference_response'
10
+ require_relative 'v2/inference_result'
11
+ require_relative 'v2/inference_result_options'
12
+ require_relative 'v2/job'
13
+ require_relative 'v2/job_response'
14
+ require_relative 'v2/job_webhook'
15
+ require_relative 'v2/raw_text'
@@ -7,14 +7,14 @@ module Mindee
7
7
  # An extracted sub-Pdf.
8
8
  class ExtractedPDF
9
9
  # Byte contents of the pdf
10
- # @return [StreamIO]
10
+ # @return [StringIO]
11
11
  attr_reader :pdf_bytes
12
12
 
13
13
  # Name of the file.
14
14
  # @return [String]
15
15
  attr_reader :filename
16
16
 
17
- # @param pdf_bytes [StreamIO]
17
+ # @param pdf_bytes [StringIO]
18
18
  # @param filename [String]
19
19
  def initialize(pdf_bytes, filename)
20
20
  @pdf_bytes = pdf_bytes
@@ -50,7 +50,9 @@ module Mindee
50
50
  # Returns the current PDF object as a usable BytesInputSource.
51
51
  # @return [Mindee::Input::Source::BytesInputSource]
52
52
  def as_input_source
53
- Mindee::Input::Source::BytesInputSource.new(@pdf_bytes.read, @filename)
53
+ raise Errors::MindeePDFError, 'Bytes object is nil.' if @pdf_bytes.nil?
54
+
55
+ Mindee::Input::Source::BytesInputSource.new(@pdf_bytes.read || '', @filename)
54
56
  end
55
57
  end
56
58
  end
@@ -29,7 +29,7 @@ module Mindee
29
29
 
30
30
  # Creates a new Pdf from pages and save it into a buffer.
31
31
  # @param page_indexes [Array<Integer>] List of page number to use for merging in the original Pdf.
32
- # @return [StreamIO] The buffer containing the new Pdf.
32
+ # @return [StringIO] The buffer containing the new Pdf.
33
33
  def cut_pages(page_indexes)
34
34
  options = PageOptions.new(params: {
35
35
  page_indexes: page_indexes,
@@ -75,24 +75,28 @@ module Mindee
75
75
  # @return [Array<Mindee::PDF::PDFExtractor::ExtractedPDF>]
76
76
  def extract_invoices(page_indexes, strict: false)
77
77
  raise Errors::MindeePDFError, 'No indexes provided.' if page_indexes.empty?
78
+
78
79
  if page_indexes[0].is_a?(Array) && page_indexes[0].all? { |i| i.is_a?(Integer) }
79
- return extract_sub_documents(page_indexes)
80
+ page_indexes_as_array = page_indexes # @type var page_indexes : Array[Array[Integer]]
81
+ return extract_sub_documents(page_indexes_as_array)
80
82
  end
81
- return extract_sub_documents(page_indexes.map(&:page_indexes)) unless strict
83
+ p_ids = page_indexes # @type var page_indexes: Product::InvoiceSplitter::InvoiceSplitterV1InvoicePageGroups
84
+ return extract_sub_documents(p_ids.map(&:page_indexes)) unless strict
82
85
 
83
86
  correct_page_indexes = []
84
87
  current_list = []
85
88
  previous_confidence = nil
86
- page_indexes.each_with_index do |page_index, i|
87
- confidence = page_index.confidence
89
+ p_ids.each_with_index do |p_i, i|
90
+ page_index = p_i # @type var page_index: Product::InvoiceSplitter::InvoiceSplitterV1InvoicePageGroup
91
+ confidence = page_index.confidence.to_f
88
92
  page_list = page_index.page_indexes
89
93
 
90
94
  if confidence >= 0.5 && previous_confidence.nil?
91
95
  current_list = page_list
92
- elsif confidence >= 0.5 && i < page_indexes.length - 1
96
+ elsif confidence >= 0.5 && i < p_ids.length - 1
93
97
  correct_page_indexes << current_list
94
98
  current_list = page_list
95
- elsif confidence < 0.5 && i == page_indexes.length - 1
99
+ elsif confidence < 0.5 && i == p_ids.length - 1
96
100
  current_list.concat page_list
97
101
  correct_page_indexes << current_list
98
102
  else