natural-pdf 0.1.5__py3-none-any.whl → 0.1.7__py3-none-any.whl

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 (61) hide show
  1. docs/finetuning/index.md +176 -0
  2. docs/ocr/index.md +34 -47
  3. docs/tutorials/01-loading-and-extraction.ipynb +34 -1536
  4. docs/tutorials/02-finding-elements.ipynb +42 -42
  5. docs/tutorials/03-extracting-blocks.ipynb +17 -17
  6. docs/tutorials/04-table-extraction.ipynb +12 -12
  7. docs/tutorials/05-excluding-content.ipynb +30 -30
  8. docs/tutorials/06-document-qa.ipynb +28 -28
  9. docs/tutorials/07-layout-analysis.ipynb +63 -35
  10. docs/tutorials/07-working-with-regions.ipynb +55 -51
  11. docs/tutorials/07-working-with-regions.md +2 -2
  12. docs/tutorials/08-spatial-navigation.ipynb +60 -60
  13. docs/tutorials/09-section-extraction.ipynb +113 -113
  14. docs/tutorials/10-form-field-extraction.ipynb +78 -50
  15. docs/tutorials/11-enhanced-table-processing.ipynb +6 -6
  16. docs/tutorials/12-ocr-integration.ipynb +149 -131
  17. docs/tutorials/12-ocr-integration.md +0 -13
  18. docs/tutorials/13-semantic-search.ipynb +313 -873
  19. natural_pdf/__init__.py +21 -22
  20. natural_pdf/analyzers/layout/gemini.py +280 -0
  21. natural_pdf/analyzers/layout/layout_manager.py +28 -1
  22. natural_pdf/analyzers/layout/layout_options.py +11 -0
  23. natural_pdf/analyzers/layout/yolo.py +6 -2
  24. natural_pdf/collections/pdf_collection.py +24 -0
  25. natural_pdf/core/element_manager.py +18 -13
  26. natural_pdf/core/page.py +174 -36
  27. natural_pdf/core/pdf.py +156 -42
  28. natural_pdf/elements/base.py +9 -17
  29. natural_pdf/elements/collections.py +99 -38
  30. natural_pdf/elements/region.py +77 -37
  31. natural_pdf/elements/text.py +5 -0
  32. natural_pdf/exporters/__init__.py +4 -0
  33. natural_pdf/exporters/base.py +61 -0
  34. natural_pdf/exporters/paddleocr.py +345 -0
  35. natural_pdf/ocr/__init__.py +57 -36
  36. natural_pdf/ocr/engine.py +160 -49
  37. natural_pdf/ocr/engine_easyocr.py +178 -157
  38. natural_pdf/ocr/engine_paddle.py +114 -189
  39. natural_pdf/ocr/engine_surya.py +87 -144
  40. natural_pdf/ocr/ocr_factory.py +125 -0
  41. natural_pdf/ocr/ocr_manager.py +65 -89
  42. natural_pdf/ocr/ocr_options.py +8 -13
  43. natural_pdf/ocr/utils.py +113 -0
  44. natural_pdf/templates/finetune/fine_tune_paddleocr.md +415 -0
  45. natural_pdf/templates/spa/css/style.css +334 -0
  46. natural_pdf/templates/spa/index.html +31 -0
  47. natural_pdf/templates/spa/js/app.js +472 -0
  48. natural_pdf/templates/spa/words.txt +235976 -0
  49. natural_pdf/utils/debug.py +34 -0
  50. natural_pdf/utils/identifiers.py +33 -0
  51. natural_pdf/utils/packaging.py +485 -0
  52. natural_pdf/utils/text_extraction.py +44 -64
  53. natural_pdf/utils/visualization.py +1 -1
  54. {natural_pdf-0.1.5.dist-info → natural_pdf-0.1.7.dist-info}/METADATA +44 -20
  55. {natural_pdf-0.1.5.dist-info → natural_pdf-0.1.7.dist-info}/RECORD +58 -47
  56. {natural_pdf-0.1.5.dist-info → natural_pdf-0.1.7.dist-info}/WHEEL +1 -1
  57. {natural_pdf-0.1.5.dist-info → natural_pdf-0.1.7.dist-info}/top_level.txt +0 -1
  58. natural_pdf/templates/ocr_debug.html +0 -517
  59. tests/test_loading.py +0 -50
  60. tests/test_optional_deps.py +0 -298
  61. {natural_pdf-0.1.5.dist-info → natural_pdf-0.1.7.dist-info}/licenses/LICENSE +0 -0
@@ -2,7 +2,7 @@
2
2
  "cells": [
3
3
  {
4
4
  "cell_type": "markdown",
5
- "id": "f4fa5be5",
5
+ "id": "6ba4c324",
6
6
  "metadata": {},
7
7
  "source": [
8
8
  "# Semantic Search Across Multiple Documents\n",
@@ -13,13 +13,13 @@
13
13
  {
14
14
  "cell_type": "code",
15
15
  "execution_count": 1,
16
- "id": "25274d94",
16
+ "id": "573f47ae",
17
17
  "metadata": {
18
18
  "execution": {
19
- "iopub.execute_input": "2025-04-16T14:59:23.384091Z",
20
- "iopub.status.busy": "2025-04-16T14:59:23.383945Z",
21
- "iopub.status.idle": "2025-04-16T14:59:23.386424Z",
22
- "shell.execute_reply": "2025-04-16T14:59:23.386138Z"
19
+ "iopub.execute_input": "2025-04-21T21:26:26.425833Z",
20
+ "iopub.status.busy": "2025-04-21T21:26:26.425672Z",
21
+ "iopub.status.idle": "2025-04-21T21:26:26.430590Z",
22
+ "shell.execute_reply": "2025-04-21T21:26:26.430219Z"
23
23
  }
24
24
  },
25
25
  "outputs": [],
@@ -31,13 +31,13 @@
31
31
  {
32
32
  "cell_type": "code",
33
33
  "execution_count": 2,
34
- "id": "78286236",
34
+ "id": "f40c7516",
35
35
  "metadata": {
36
36
  "execution": {
37
- "iopub.execute_input": "2025-04-16T14:59:23.387957Z",
38
- "iopub.status.busy": "2025-04-16T14:59:23.387832Z",
39
- "iopub.status.idle": "2025-04-16T14:59:33.969693Z",
40
- "shell.execute_reply": "2025-04-16T14:59:33.969249Z"
37
+ "iopub.execute_input": "2025-04-21T21:26:26.432199Z",
38
+ "iopub.status.busy": "2025-04-21T21:26:26.432080Z",
39
+ "iopub.status.idle": "2025-04-21T21:26:33.413144Z",
40
+ "shell.execute_reply": "2025-04-21T21:26:33.412658Z"
41
41
  }
42
42
  },
43
43
  "outputs": [
@@ -48,26 +48,12 @@
48
48
  "natural_pdf.collections.pdf_collection - INFO - Initializing 2 PDF objects...\n"
49
49
  ]
50
50
  },
51
- {
52
- "name": "stderr",
53
- "output_type": "stream",
54
- "text": [
55
- "\u001b[2m2025-04-16T14:59:29.336679Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mInitializing 2 PDF objects... \u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m145\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mInitializing 2 PDF objects...\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.collections.pdf_collection\u001b[0m\n"
56
- ]
57
- },
58
- {
59
- "name": "stderr",
60
- "output_type": "stream",
61
- "text": [
62
- "[2025-04-16 17:59:29,336] [ INFO] pdf_collection.py:145 - Initializing 2 PDF objects...\n"
63
- ]
64
- },
65
51
  {
66
52
  "name": "stderr",
67
53
  "output_type": "stream",
68
54
  "text": [
69
55
  "\r",
70
- "Loading PDFs: 0%| | 0/2 [00:00<?, ?it/s]"
56
+ "Loading PDFs: 0%| | 0/2 [00:00<?, ?it/s]"
71
57
  ]
72
58
  },
73
59
  {
@@ -81,56 +67,14 @@
81
67
  "name": "stderr",
82
68
  "output_type": "stream",
83
69
  "text": [
84
- "\u001b[2m2025-04-16T14:59:29.353564Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mDownloading PDF from URL: https://github.com/jsoma/natural-pdf/raw/refs/heads/main/pdfs/01-practice.pdf\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m80\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mDownloading PDF from URL: https://github.com/jsoma/natural-pdf/raw/refs/heads/main/pdfs/01-practice.pdf\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.core.pdf\u001b[0m\n"
85
- ]
86
- },
87
- {
88
- "name": "stderr",
89
- "output_type": "stream",
90
- "text": [
91
- "[2025-04-16 17:59:29,353] [ INFO] pdf.py:80 - Downloading PDF from URL: https://github.com/jsoma/natural-pdf/raw/refs/heads/main/pdfs/01-practice.pdf\n"
92
- ]
93
- },
94
- {
95
- "name": "stderr",
96
- "output_type": "stream",
97
- "text": [
98
- "natural_pdf.core.pdf - INFO - PDF downloaded to temporary file: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpwq_3f750.pdf\n"
99
- ]
100
- },
101
- {
102
- "name": "stderr",
103
- "output_type": "stream",
104
- "text": [
105
- "\u001b[2m2025-04-16T14:59:29.636697Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mPDF downloaded to temporary file: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpwq_3f750.pdf\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m93\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mPDF downloaded to temporary file: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpwq_3f750.pdf\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.core.pdf\u001b[0m\n"
106
- ]
107
- },
108
- {
109
- "name": "stderr",
110
- "output_type": "stream",
111
- "text": [
112
- "[2025-04-16 17:59:29,636] [ INFO] pdf.py:93 - PDF downloaded to temporary file: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpwq_3f750.pdf\n"
113
- ]
114
- },
115
- {
116
- "name": "stderr",
117
- "output_type": "stream",
118
- "text": [
119
- "natural_pdf.core.pdf - INFO - Initializing PDF from /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpwq_3f750.pdf\n"
70
+ "natural_pdf.core.pdf - INFO - PDF downloaded to temporary file: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmp0qxzzh1m.pdf\n"
120
71
  ]
121
72
  },
122
73
  {
123
74
  "name": "stderr",
124
75
  "output_type": "stream",
125
76
  "text": [
126
- "\u001b[2m2025-04-16T14:59:29.637422Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mInitializing PDF from /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpwq_3f750.pdf\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m106\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mInitializing PDF from /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpwq_3f750.pdf\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.core.pdf\u001b[0m\n"
127
- ]
128
- },
129
- {
130
- "name": "stderr",
131
- "output_type": "stream",
132
- "text": [
133
- "[2025-04-16 17:59:29,637] [ INFO] pdf.py:106 - Initializing PDF from /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpwq_3f750.pdf\n"
77
+ "natural_pdf.core.pdf - INFO - Initializing PDF from /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmp0qxzzh1m.pdf\n"
134
78
  ]
135
79
  },
136
80
  {
@@ -144,35 +88,7 @@
144
88
  "name": "stderr",
145
89
  "output_type": "stream",
146
90
  "text": [
147
- "\u001b[2m2025-04-16T14:59:29.638958Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mOCRManager initialized. \u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m38\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mOCRManager initialized.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.ocr.ocr_manager\u001b[0m\n"
148
- ]
149
- },
150
- {
151
- "name": "stderr",
152
- "output_type": "stream",
153
- "text": [
154
- "[2025-04-16 17:59:29,638] [ INFO] ocr_manager.py:38 - OCRManager initialized.\n"
155
- ]
156
- },
157
- {
158
- "name": "stderr",
159
- "output_type": "stream",
160
- "text": [
161
- "natural_pdf.analyzers.layout.layout_manager - INFO - LayoutManager initialized. Available engines: ['yolo', 'tatr', 'paddle', 'surya', 'docling']\n"
162
- ]
163
- },
164
- {
165
- "name": "stderr",
166
- "output_type": "stream",
167
- "text": [
168
- "\u001b[2m2025-04-16T14:59:29.639737Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mLayoutManager initialized. Available engines: ['yolo', 'tatr', 'paddle', 'surya', 'docling']\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m68\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mLayoutManager initialized. Available engines: ['yolo', 'tatr', 'paddle', 'surya', 'docling']\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.analyzers.layout.layout_manager\u001b[0m\n"
169
- ]
170
- },
171
- {
172
- "name": "stderr",
173
- "output_type": "stream",
174
- "text": [
175
- "[2025-04-16 17:59:29,639] [ INFO] layout_manager.py:68 - LayoutManager initialized. Available engines: ['yolo', 'tatr', 'paddle', 'surya', 'docling']\n"
91
+ "natural_pdf.analyzers.layout.layout_manager - INFO - LayoutManager initialized. Available engines: ['yolo', 'tatr', 'paddle', 'surya', 'docling', 'gemini']\n"
176
92
  ]
177
93
  },
178
94
  {
@@ -182,20 +98,6 @@
182
98
  "natural_pdf.core.highlighting_service - INFO - HighlightingService initialized with ColorManager.\n"
183
99
  ]
184
100
  },
185
- {
186
- "name": "stderr",
187
- "output_type": "stream",
188
- "text": [
189
- "\u001b[2m2025-04-16T14:59:29.640333Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mHighlightingService initialized with ColorManager.\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m286\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mHighlightingService initialized with ColorManager.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.core.highlighting_service\u001b[0m\n"
190
- ]
191
- },
192
- {
193
- "name": "stderr",
194
- "output_type": "stream",
195
- "text": [
196
- "[2025-04-16 17:59:29,640] [ INFO] highlighting_service.py:286 - HighlightingService initialized with ColorManager.\n"
197
- ]
198
- },
199
101
  {
200
102
  "name": "stderr",
201
103
  "output_type": "stream",
@@ -203,20 +105,6 @@
203
105
  "natural_pdf.core.pdf - INFO - Initialized HighlightingService.\n"
204
106
  ]
205
107
  },
206
- {
207
- "name": "stderr",
208
- "output_type": "stream",
209
- "text": [
210
- "\u001b[2m2025-04-16T14:59:29.642175Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mInitialized HighlightingService.\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m141\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mInitialized HighlightingService.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.core.pdf\u001b[0m\n"
211
- ]
212
- },
213
- {
214
- "name": "stderr",
215
- "output_type": "stream",
216
- "text": [
217
- "[2025-04-16 17:59:29,641] [ INFO] pdf.py:141 - Initialized HighlightingService.\n"
218
- ]
219
- },
220
108
  {
221
109
  "name": "stderr",
222
110
  "output_type": "stream",
@@ -224,26 +112,12 @@
224
112
  "natural_pdf.core.pdf - INFO - PDF 'https://github.com/jsoma/natural-pdf/raw/refs/heads/main/pdfs/01-practice.pdf' initialized with 1 pages.\n"
225
113
  ]
226
114
  },
227
- {
228
- "name": "stderr",
229
- "output_type": "stream",
230
- "text": [
231
- "\u001b[2m2025-04-16T14:59:29.643262Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mPDF 'https://github.com/jsoma/natural-pdf/raw/refs/heads/main/pdfs/01-practice.pdf' initialized with 1 pages.\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m142\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mPDF 'https://github.com/jsoma/natural-pdf/raw/refs/heads/main/pdfs/01-practice.pdf' initialized with 1 pages.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.core.pdf\u001b[0m\n"
232
- ]
233
- },
234
- {
235
- "name": "stderr",
236
- "output_type": "stream",
237
- "text": [
238
- "[2025-04-16 17:59:29,643] [ INFO] pdf.py:142 - PDF 'https://github.com/jsoma/natural-pdf/raw/refs/heads/main/pdfs/01-practice.pdf' initialized with 1 pages.\n"
239
- ]
240
- },
241
115
  {
242
116
  "name": "stderr",
243
117
  "output_type": "stream",
244
118
  "text": [
245
119
  "\r",
246
- "Loading PDFs: 50%|███████████████████▌ | 1/2 [00:00<00:00, 3.44it/s]"
120
+ "Loading PDFs: 50%|█████████████████████████████████████████▌ | 1/2 [00:00<00:00, 6.99it/s]"
247
121
  ]
248
122
  },
249
123
  {
@@ -257,56 +131,14 @@
257
131
  "name": "stderr",
258
132
  "output_type": "stream",
259
133
  "text": [
260
- "\u001b[2m2025-04-16T14:59:29.644068Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mDownloading PDF from URL: https://github.com/jsoma/natural-pdf/raw/refs/heads/main/pdfs/Atlanta_Public_Schools_GA_sample.pdf\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m80\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mDownloading PDF from URL: https://github.com/jsoma/natural-pdf/raw/refs/heads/main/pdfs/Atlanta_Public_Schools_GA_sample.pdf\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.core.pdf\u001b[0m\n"
261
- ]
262
- },
263
- {
264
- "name": "stderr",
265
- "output_type": "stream",
266
- "text": [
267
- "[2025-04-16 17:59:29,643] [ INFO] pdf.py:80 - Downloading PDF from URL: https://github.com/jsoma/natural-pdf/raw/refs/heads/main/pdfs/Atlanta_Public_Schools_GA_sample.pdf\n"
268
- ]
269
- },
270
- {
271
- "name": "stderr",
272
- "output_type": "stream",
273
- "text": [
274
- "natural_pdf.core.pdf - INFO - PDF downloaded to temporary file: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpofyt17qz.pdf\n"
275
- ]
276
- },
277
- {
278
- "name": "stderr",
279
- "output_type": "stream",
280
- "text": [
281
- "\u001b[2m2025-04-16T14:59:33.955839Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mPDF downloaded to temporary file: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpofyt17qz.pdf\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m93\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mPDF downloaded to temporary file: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpofyt17qz.pdf\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.core.pdf\u001b[0m\n"
282
- ]
283
- },
284
- {
285
- "name": "stderr",
286
- "output_type": "stream",
287
- "text": [
288
- "[2025-04-16 17:59:33,952] [ INFO] pdf.py:93 - PDF downloaded to temporary file: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpofyt17qz.pdf\n"
289
- ]
290
- },
291
- {
292
- "name": "stderr",
293
- "output_type": "stream",
294
- "text": [
295
- "natural_pdf.core.pdf - INFO - Initializing PDF from /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpofyt17qz.pdf\n"
296
- ]
297
- },
298
- {
299
- "name": "stderr",
300
- "output_type": "stream",
301
- "text": [
302
- "\u001b[2m2025-04-16T14:59:33.957471Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mInitializing PDF from /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpofyt17qz.pdf\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m106\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mInitializing PDF from /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpofyt17qz.pdf\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.core.pdf\u001b[0m\n"
134
+ "natural_pdf.core.pdf - INFO - PDF downloaded to temporary file: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmp67aw1giy.pdf\n"
303
135
  ]
304
136
  },
305
137
  {
306
138
  "name": "stderr",
307
139
  "output_type": "stream",
308
140
  "text": [
309
- "[2025-04-16 17:59:33,957] [ INFO] pdf.py:106 - Initializing PDF from /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpofyt17qz.pdf\n"
141
+ "natural_pdf.core.pdf - INFO - Initializing PDF from /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmp67aw1giy.pdf\n"
310
142
  ]
311
143
  },
312
144
  {
@@ -320,35 +152,7 @@
320
152
  "name": "stderr",
321
153
  "output_type": "stream",
322
154
  "text": [
323
- "\u001b[2m2025-04-16T14:59:33.959364Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mOCRManager initialized. \u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m38\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mOCRManager initialized.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.ocr.ocr_manager\u001b[0m\n"
324
- ]
325
- },
326
- {
327
- "name": "stderr",
328
- "output_type": "stream",
329
- "text": [
330
- "[2025-04-16 17:59:33,958] [ INFO] ocr_manager.py:38 - OCRManager initialized.\n"
331
- ]
332
- },
333
- {
334
- "name": "stderr",
335
- "output_type": "stream",
336
- "text": [
337
- "natural_pdf.analyzers.layout.layout_manager - INFO - LayoutManager initialized. Available engines: ['yolo', 'tatr', 'paddle', 'surya', 'docling']\n"
338
- ]
339
- },
340
- {
341
- "name": "stderr",
342
- "output_type": "stream",
343
- "text": [
344
- "\u001b[2m2025-04-16T14:59:33.960339Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mLayoutManager initialized. Available engines: ['yolo', 'tatr', 'paddle', 'surya', 'docling']\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m68\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mLayoutManager initialized. Available engines: ['yolo', 'tatr', 'paddle', 'surya', 'docling']\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.analyzers.layout.layout_manager\u001b[0m\n"
345
- ]
346
- },
347
- {
348
- "name": "stderr",
349
- "output_type": "stream",
350
- "text": [
351
- "[2025-04-16 17:59:33,960] [ INFO] layout_manager.py:68 - LayoutManager initialized. Available engines: ['yolo', 'tatr', 'paddle', 'surya', 'docling']\n"
155
+ "natural_pdf.analyzers.layout.layout_manager - INFO - LayoutManager initialized. Available engines: ['yolo', 'tatr', 'paddle', 'surya', 'docling', 'gemini']\n"
352
156
  ]
353
157
  },
354
158
  {
@@ -358,20 +162,6 @@
358
162
  "natural_pdf.core.highlighting_service - INFO - HighlightingService initialized with ColorManager.\n"
359
163
  ]
360
164
  },
361
- {
362
- "name": "stderr",
363
- "output_type": "stream",
364
- "text": [
365
- "\u001b[2m2025-04-16T14:59:33.961122Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mHighlightingService initialized with ColorManager.\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m286\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mHighlightingService initialized with ColorManager.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.core.highlighting_service\u001b[0m\n"
366
- ]
367
- },
368
- {
369
- "name": "stderr",
370
- "output_type": "stream",
371
- "text": [
372
- "[2025-04-16 17:59:33,960] [ INFO] highlighting_service.py:286 - HighlightingService initialized with ColorManager.\n"
373
- ]
374
- },
375
165
  {
376
166
  "name": "stderr",
377
167
  "output_type": "stream",
@@ -379,20 +169,6 @@
379
169
  "natural_pdf.core.pdf - INFO - Initialized HighlightingService.\n"
380
170
  ]
381
171
  },
382
- {
383
- "name": "stderr",
384
- "output_type": "stream",
385
- "text": [
386
- "\u001b[2m2025-04-16T14:59:33.964681Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mInitialized HighlightingService.\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m141\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mInitialized HighlightingService.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.core.pdf\u001b[0m\n"
387
- ]
388
- },
389
- {
390
- "name": "stderr",
391
- "output_type": "stream",
392
- "text": [
393
- "[2025-04-16 17:59:33,964] [ INFO] pdf.py:141 - Initialized HighlightingService.\n"
394
- ]
395
- },
396
172
  {
397
173
  "name": "stderr",
398
174
  "output_type": "stream",
@@ -400,26 +176,12 @@
400
176
  "natural_pdf.core.pdf - INFO - PDF 'https://github.com/jsoma/natural-pdf/raw/refs/heads/main/pdfs/Atlanta_Public_Schools_GA_sample.pdf' initialized with 5 pages.\n"
401
177
  ]
402
178
  },
403
- {
404
- "name": "stderr",
405
- "output_type": "stream",
406
- "text": [
407
- "\u001b[2m2025-04-16T14:59:33.965372Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mPDF 'https://github.com/jsoma/natural-pdf/raw/refs/heads/main/pdfs/Atlanta_Public_Schools_GA_sample.pdf' initialized with 5 pages.\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m142\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mPDF 'https://github.com/jsoma/natural-pdf/raw/refs/heads/main/pdfs/Atlanta_Public_Schools_GA_sample.pdf' initialized with 5 pages.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.core.pdf\u001b[0m\n"
408
- ]
409
- },
410
- {
411
- "name": "stderr",
412
- "output_type": "stream",
413
- "text": [
414
- "[2025-04-16 17:59:33,965] [ INFO] pdf.py:142 - PDF 'https://github.com/jsoma/natural-pdf/raw/refs/heads/main/pdfs/Atlanta_Public_Schools_GA_sample.pdf' initialized with 5 pages.\n"
415
- ]
416
- },
417
179
  {
418
180
  "name": "stderr",
419
181
  "output_type": "stream",
420
182
  "text": [
421
183
  "\r",
422
- "Loading PDFs: 100%|███████████████████████████████████████| 2/2 [00:04<00:00, 2.66s/it]"
184
+ "Loading PDFs: 100%|███████████████████████████████████████████████████████████████████████████████████| 2/2 [00:00<00:00, 8.19it/s]"
423
185
  ]
424
186
  },
425
187
  {
@@ -427,7 +189,7 @@
427
189
  "output_type": "stream",
428
190
  "text": [
429
191
  "\r",
430
- "Loading PDFs: 100%|███████████████████████████████████████| 2/2 [00:04<00:00, 2.31s/it]"
192
+ "Loading PDFs: 100%|███████████████████████████████████████████████████████████████████████████████████| 2/2 [00:00<00:00, 7.97it/s]"
431
193
  ]
432
194
  },
433
195
  {
@@ -438,20 +200,6 @@
438
200
  "natural_pdf.collections.pdf_collection - INFO - Successfully initialized 2 PDFs. Failed: 0\n"
439
201
  ]
440
202
  },
441
- {
442
- "name": "stderr",
443
- "output_type": "stream",
444
- "text": [
445
- "\u001b[2m2025-04-16T14:59:33.966755Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully initialized 2 PDFs. Failed: 0\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m154\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mSuccessfully initialized 2 PDFs. Failed: 0\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.collections.pdf_collection\u001b[0m\n"
446
- ]
447
- },
448
- {
449
- "name": "stderr",
450
- "output_type": "stream",
451
- "text": [
452
- "[2025-04-16 17:59:33,966] [ INFO] pdf_collection.py:154 - Successfully initialized 2 PDFs. Failed: 0\n"
453
- ]
454
- },
455
203
  {
456
204
  "name": "stdout",
457
205
  "output_type": "stream",
@@ -481,7 +229,7 @@
481
229
  },
482
230
  {
483
231
  "cell_type": "markdown",
484
- "id": "57c16881",
232
+ "id": "4137d1ea",
485
233
  "metadata": {},
486
234
  "source": [
487
235
  "## Initializing the Search Index\n",
@@ -492,13 +240,13 @@
492
240
  {
493
241
  "cell_type": "code",
494
242
  "execution_count": 3,
495
- "id": "53b5decd",
243
+ "id": "6b57f754",
496
244
  "metadata": {
497
245
  "execution": {
498
- "iopub.execute_input": "2025-04-16T14:59:33.973935Z",
499
- "iopub.status.busy": "2025-04-16T14:59:33.972405Z",
500
- "iopub.status.idle": "2025-04-16T14:59:37.674880Z",
501
- "shell.execute_reply": "2025-04-16T14:59:37.674549Z"
246
+ "iopub.execute_input": "2025-04-21T21:26:33.416364Z",
247
+ "iopub.status.busy": "2025-04-21T21:26:33.415349Z",
248
+ "iopub.status.idle": "2025-04-21T21:26:36.015751Z",
249
+ "shell.execute_reply": "2025-04-21T21:26:36.015429Z"
502
250
  }
503
251
  },
504
252
  "outputs": [
@@ -509,20 +257,6 @@
509
257
  "natural_pdf.search.searchable_mixin - INFO - Using default collection name 'default_collection' for in-memory service.\n"
510
258
  ]
511
259
  },
512
- {
513
- "name": "stderr",
514
- "output_type": "stream",
515
- "text": [
516
- "\u001b[2m2025-04-16T14:59:33.975593Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mUsing default collection name 'default_collection' for in-memory service.\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m104\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mUsing default collection name 'default_collection' for in-memory service.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.searchable_mixin\u001b[0m\n"
517
- ]
518
- },
519
- {
520
- "name": "stderr",
521
- "output_type": "stream",
522
- "text": [
523
- "[2025-04-16 17:59:33,974] [ INFO] searchable_mixin.py:104 - Using default collection name 'default_collection' for in-memory service.\n"
524
- ]
525
- },
526
260
  {
527
261
  "name": "stderr",
528
262
  "output_type": "stream",
@@ -530,20 +264,6 @@
530
264
  "natural_pdf.search.searchable_mixin - INFO - Creating new SearchService: name='default_collection', persist=False, model=default\n"
531
265
  ]
532
266
  },
533
- {
534
- "name": "stderr",
535
- "output_type": "stream",
536
- "text": [
537
- "\u001b[2m2025-04-16T14:59:33.976579Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mCreating new SearchService: name='default_collection', persist=False, model=default\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m106\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mCreating new SearchService: name='default_collection', persist=False, model=default\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.searchable_mixin\u001b[0m\n"
538
- ]
539
- },
540
- {
541
- "name": "stderr",
542
- "output_type": "stream",
543
- "text": [
544
- "[2025-04-16 17:59:33,976] [ INFO] searchable_mixin.py:106 - Creating new SearchService: name='default_collection', persist=False, model=default\n"
545
- ]
546
- },
547
267
  {
548
268
  "name": "stderr",
549
269
  "output_type": "stream",
@@ -551,20 +271,6 @@
551
271
  "natural_pdf.search.haystack_search_service - INFO - HaystackSearchService initialized for collection='default_collection' (persist=False, model='sentence-transformers/all-MiniLM-L6-v2'). Default path: './natural_pdf_index'\n"
552
272
  ]
553
273
  },
554
- {
555
- "name": "stderr",
556
- "output_type": "stream",
557
- "text": [
558
- "\u001b[2m2025-04-16T14:59:33.977956Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mHaystackSearchService initialized for collection='default_collection' (persist=False, model='sentence-transformers/all-MiniLM-L6-v2'). Default path: './natural_pdf_index'\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m106\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mHaystackSearchService initialized for collection='default_collection' (persist=False, model='sentence-transformers/all-MiniLM-L6-v2'). Default path: './natural_pdf_index'\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.haystack_search_service\u001b[0m\n"
559
- ]
560
- },
561
- {
562
- "name": "stderr",
563
- "output_type": "stream",
564
- "text": [
565
- "[2025-04-16 17:59:33,977] [ INFO] haystack_search_service.py:106 - HaystackSearchService initialized for collection='default_collection' (persist=False, model='sentence-transformers/all-MiniLM-L6-v2'). Default path: './natural_pdf_index'\n"
566
- ]
567
- },
568
274
  {
569
275
  "name": "stderr",
570
276
  "output_type": "stream",
@@ -572,20 +278,6 @@
572
278
  "natural_pdf.search - INFO - Created new HaystackSearchService instance for collection 'default_collection'.\n"
573
279
  ]
574
280
  },
575
- {
576
- "name": "stderr",
577
- "output_type": "stream",
578
- "text": [
579
- "\u001b[2m2025-04-16T14:59:33.978879Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mCreated new HaystackSearchService instance for collection 'default_collection'.\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m80\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mCreated new HaystackSearchService instance for collection 'default_collection'.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search\u001b[0m\n"
580
- ]
581
- },
582
- {
583
- "name": "stderr",
584
- "output_type": "stream",
585
- "text": [
586
- "[2025-04-16 17:59:33,978] [ INFO] __init__.py:80 - Created new HaystackSearchService instance for collection 'default_collection'.\n"
587
- ]
588
- },
589
281
  {
590
282
  "name": "stderr",
591
283
  "output_type": "stream",
@@ -593,20 +285,6 @@
593
285
  "natural_pdf.search.searchable_mixin - INFO - index=True: Proceeding to index collection immediately after search initialization.\n"
594
286
  ]
595
287
  },
596
- {
597
- "name": "stderr",
598
- "output_type": "stream",
599
- "text": [
600
- "\u001b[2m2025-04-16T14:59:33.979919Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mindex=True: Proceeding to index collection immediately after search initialization.\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m141\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mindex=True: Proceeding to index collection immediately after search initialization.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.searchable_mixin\u001b[0m\n"
601
- ]
602
- },
603
- {
604
- "name": "stderr",
605
- "output_type": "stream",
606
- "text": [
607
- "[2025-04-16 17:59:33,979] [ INFO] searchable_mixin.py:141 - index=True: Proceeding to index collection immediately after search initialization.\n"
608
- ]
609
- },
610
288
  {
611
289
  "name": "stderr",
612
290
  "output_type": "stream",
@@ -614,20 +292,6 @@
614
292
  "natural_pdf.search.searchable_mixin - INFO - Starting internal indexing process into SearchService collection 'default_collection'...\n"
615
293
  ]
616
294
  },
617
- {
618
- "name": "stderr",
619
- "output_type": "stream",
620
- "text": [
621
- "\u001b[2m2025-04-16T14:59:33.980745Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mStarting internal indexing process into SearchService collection 'default_collection'...\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m152\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mStarting internal indexing process into SearchService collection 'default_collection'...\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.searchable_mixin\u001b[0m\n"
622
- ]
623
- },
624
- {
625
- "name": "stderr",
626
- "output_type": "stream",
627
- "text": [
628
- "[2025-04-16 17:59:33,980] [ INFO] searchable_mixin.py:152 - Starting internal indexing process into SearchService collection 'default_collection'...\n"
629
- ]
630
- },
631
295
  {
632
296
  "name": "stderr",
633
297
  "output_type": "stream",
@@ -635,20 +299,6 @@
635
299
  "natural_pdf.search.searchable_mixin - INFO - Prepared 6 indexable items for indexing.\n"
636
300
  ]
637
301
  },
638
- {
639
- "name": "stderr",
640
- "output_type": "stream",
641
- "text": [
642
- "\u001b[2m2025-04-16T14:59:33.981554Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mPrepared 6 indexable items for indexing.\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m165\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mPrepared 6 indexable items for indexing.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.searchable_mixin\u001b[0m\n"
643
- ]
644
- },
645
- {
646
- "name": "stderr",
647
- "output_type": "stream",
648
- "text": [
649
- "[2025-04-16 17:59:33,981] [ INFO] searchable_mixin.py:165 - Prepared 6 indexable items for indexing.\n"
650
- ]
651
- },
652
302
  {
653
303
  "name": "stderr",
654
304
  "output_type": "stream",
@@ -656,20 +306,6 @@
656
306
  "natural_pdf.search.haystack_search_service - INFO - Index request for collection='default_collection', docs=6, model='sentence-transformers/all-MiniLM-L6-v2', force=False, persist=False\n"
657
307
  ]
658
308
  },
659
- {
660
- "name": "stderr",
661
- "output_type": "stream",
662
- "text": [
663
- "\u001b[2m2025-04-16T14:59:33.982471Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mIndex request for collection='default_collection', docs=6, model='sentence-transformers/all-MiniLM-L6-v2', force=False, persist=False\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m210\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mIndex request for collection='default_collection', docs=6, model='sentence-transformers/all-MiniLM-L6-v2', force=False, persist=False\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.haystack_search_service\u001b[0m\n"
664
- ]
665
- },
666
- {
667
- "name": "stderr",
668
- "output_type": "stream",
669
- "text": [
670
- "[2025-04-16 17:59:33,982] [ INFO] haystack_search_service.py:210 - Index request for collection='default_collection', docs=6, model='sentence-transformers/all-MiniLM-L6-v2', force=False, persist=False\n"
671
- ]
672
- },
673
309
  {
674
310
  "name": "stderr",
675
311
  "output_type": "stream",
@@ -677,20 +313,6 @@
677
313
  "natural_pdf.search.haystack_search_service - INFO - Created SentenceTransformersDocumentEmbedder. Model: sentence-transformers/all-MiniLM-L6-v2, Device: ComponentDevice(_single_device=Device(type=<DeviceType.MPS: 'mps'>, id=None), _multiple_devices=None)\n"
678
314
  ]
679
315
  },
680
- {
681
- "name": "stderr",
682
- "output_type": "stream",
683
- "text": [
684
- "\u001b[2m2025-04-16T14:59:36.828108Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mCreated SentenceTransformersDocumentEmbedder. Model: sentence-transformers/all-MiniLM-L6-v2, Device: ComponentDevice(_single_device=Device(type=<DeviceType.MPS: 'mps'>, id=None), _multiple_devices=None)\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m146\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mCreated SentenceTransformersDocumentEmbedder. Model: sentence-transformers/all-MiniLM-L6-v2, Device: ComponentDevice(_single_device=Device(type=<DeviceType.MPS: 'mps'>, id=None), _multiple_devices=None)\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.haystack_search_service\u001b[0m\n"
685
- ]
686
- },
687
- {
688
- "name": "stderr",
689
- "output_type": "stream",
690
- "text": [
691
- "[2025-04-16 17:59:36,827] [ INFO] haystack_search_service.py:146 - Created SentenceTransformersDocumentEmbedder. Model: sentence-transformers/all-MiniLM-L6-v2, Device: ComponentDevice(_single_device=Device(type=<DeviceType.MPS: 'mps'>, id=None), _multiple_devices=None)\n"
692
- ]
693
- },
694
316
  {
695
317
  "name": "stderr",
696
318
  "output_type": "stream",
@@ -698,20 +320,6 @@
698
320
  "natural_pdf.search.haystack_search_service - INFO - Preparing Haystack Documents from 6 indexable items...\n"
699
321
  ]
700
322
  },
701
- {
702
- "name": "stderr",
703
- "output_type": "stream",
704
- "text": [
705
- "\u001b[2m2025-04-16T14:59:36.828818Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mPreparing Haystack Documents from 6 indexable items...\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m241\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mPreparing Haystack Documents from 6 indexable items...\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.haystack_search_service\u001b[0m\n"
706
- ]
707
- },
708
- {
709
- "name": "stderr",
710
- "output_type": "stream",
711
- "text": [
712
- "[2025-04-16 17:59:36,828] [ INFO] haystack_search_service.py:241 - Preparing Haystack Documents from 6 indexable items...\n"
713
- ]
714
- },
715
323
  {
716
324
  "name": "stderr",
717
325
  "output_type": "stream",
@@ -719,24 +327,10 @@
719
327
  "natural_pdf.search.haystack_search_service - INFO - Embedding 6 documents using 'sentence-transformers/all-MiniLM-L6-v2'...\n"
720
328
  ]
721
329
  },
722
- {
723
- "name": "stderr",
724
- "output_type": "stream",
725
- "text": [
726
- "\u001b[2m2025-04-16T14:59:37.420176Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mEmbedding 6 documents using 'sentence-transformers/all-MiniLM-L6-v2'...\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m281\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mEmbedding 6 documents using 'sentence-transformers/all-MiniLM-L6-v2'...\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.haystack_search_service\u001b[0m\n"
727
- ]
728
- },
729
- {
730
- "name": "stderr",
731
- "output_type": "stream",
732
- "text": [
733
- "[2025-04-16 17:59:37,419] [ INFO] haystack_search_service.py:281 - Embedding 6 documents using 'sentence-transformers/all-MiniLM-L6-v2'...\n"
734
- ]
735
- },
736
330
  {
737
331
  "data": {
738
332
  "application/vnd.jupyter.widget-view+json": {
739
- "model_id": "c680fa26e0ff4501b6ef8eacd599090e",
333
+ "model_id": "cf2741c35c4e430a80c721891fe023d9",
740
334
  "version_major": 2,
741
335
  "version_minor": 0
742
336
  },
@@ -751,105 +345,35 @@
751
345
  "name": "stderr",
752
346
  "output_type": "stream",
753
347
  "text": [
754
- "natural_pdf.search.haystack_search_service - INFO - Successfully embedded 6 documents.\n"
755
- ]
756
- },
757
- {
758
- "name": "stderr",
759
- "output_type": "stream",
760
- "text": [
761
- "\u001b[2m2025-04-16T14:59:37.669019Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully embedded 6 documents.\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m286\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mSuccessfully embedded 6 documents.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.haystack_search_service\u001b[0m\n"
762
- ]
763
- },
764
- {
765
- "name": "stderr",
766
- "output_type": "stream",
767
- "text": [
768
- "[2025-04-16 17:59:37,668] [ INFO] haystack_search_service.py:286 - Successfully embedded 6 documents.\n"
769
- ]
770
- },
771
- {
772
- "name": "stderr",
773
- "output_type": "stream",
774
- "text": [
775
- "natural_pdf.search.haystack_search_service - INFO - Writing 6 embedded documents to store 'default_collection'...\n"
776
- ]
777
- },
778
- {
779
- "name": "stderr",
780
- "output_type": "stream",
781
- "text": [
782
- "\u001b[2m2025-04-16T14:59:37.669875Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mWriting 6 embedded documents to store 'default_collection'...\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m302\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mWriting 6 embedded documents to store 'default_collection'...\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.haystack_search_service\u001b[0m\n"
783
- ]
784
- },
785
- {
786
- "name": "stderr",
787
- "output_type": "stream",
788
- "text": [
789
- "[2025-04-16 17:59:37,669] [ INFO] haystack_search_service.py:302 - Writing 6 embedded documents to store 'default_collection'...\n"
790
- ]
791
- },
792
- {
793
- "name": "stderr",
794
- "output_type": "stream",
795
- "text": [
796
- "natural_pdf.search.haystack_search_service - INFO - Successfully wrote 6 documents to store 'default_collection'.\n"
797
- ]
798
- },
799
- {
800
- "name": "stderr",
801
- "output_type": "stream",
802
- "text": [
803
- "\u001b[2m2025-04-16T14:59:37.671847Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully wrote 6 documents to store 'default_collection'.\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m308\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mSuccessfully wrote 6 documents to store 'default_collection'.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.haystack_search_service\u001b[0m\n"
804
- ]
805
- },
806
- {
807
- "name": "stderr",
808
- "output_type": "stream",
809
- "text": [
810
- "[2025-04-16 17:59:37,671] [ INFO] haystack_search_service.py:308 - Successfully wrote 6 documents to store 'default_collection'.\n"
811
- ]
812
- },
813
- {
814
- "name": "stderr",
815
- "output_type": "stream",
816
- "text": [
817
- "natural_pdf.search.haystack_search_service - INFO - Store 'default_collection' document count after write: 6\n"
818
- ]
819
- },
820
- {
821
- "name": "stderr",
822
- "output_type": "stream",
823
- "text": [
824
- "\u001b[2m2025-04-16T14:59:37.672454Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mStore 'default_collection' document count after write: 6\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m310\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mStore 'default_collection' document count after write: 6\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.haystack_search_service\u001b[0m\n"
348
+ "natural_pdf.search.haystack_search_service - INFO - Successfully embedded 6 documents.\n"
825
349
  ]
826
350
  },
827
351
  {
828
352
  "name": "stderr",
829
353
  "output_type": "stream",
830
354
  "text": [
831
- "[2025-04-16 17:59:37,672] [ INFO] haystack_search_service.py:310 - Store 'default_collection' document count after write: 6\n"
355
+ "natural_pdf.search.haystack_search_service - INFO - Writing 6 embedded documents to store 'default_collection'...\n"
832
356
  ]
833
357
  },
834
358
  {
835
359
  "name": "stderr",
836
360
  "output_type": "stream",
837
361
  "text": [
838
- "natural_pdf.search.searchable_mixin - INFO - Successfully completed indexing into SearchService collection 'default_collection'.\n"
362
+ "natural_pdf.search.haystack_search_service - INFO - Successfully wrote 6 documents to store 'default_collection'.\n"
839
363
  ]
840
364
  },
841
365
  {
842
366
  "name": "stderr",
843
367
  "output_type": "stream",
844
368
  "text": [
845
- "\u001b[2m2025-04-16T14:59:37.673044Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully completed indexing into SearchService collection 'default_collection'.\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m173\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mSuccessfully completed indexing into SearchService collection 'default_collection'.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.searchable_mixin\u001b[0m\n"
369
+ "natural_pdf.search.haystack_search_service - INFO - Store 'default_collection' document count after write: 6\n"
846
370
  ]
847
371
  },
848
372
  {
849
373
  "name": "stderr",
850
374
  "output_type": "stream",
851
375
  "text": [
852
- "[2025-04-16 17:59:37,672] [ INFO] searchable_mixin.py:173 - Successfully completed indexing into SearchService collection 'default_collection'.\n"
376
+ "natural_pdf.search.searchable_mixin - INFO - Successfully completed indexing into SearchService collection 'default_collection'.\n"
853
377
  ]
854
378
  },
855
379
  {
@@ -869,7 +393,7 @@
869
393
  },
870
394
  {
871
395
  "cell_type": "markdown",
872
- "id": "86416bd8",
396
+ "id": "e1e86b3b",
873
397
  "metadata": {},
874
398
  "source": [
875
399
  "## Performing a Semantic Search\n",
@@ -880,13 +404,13 @@
880
404
  {
881
405
  "cell_type": "code",
882
406
  "execution_count": 4,
883
- "id": "c4f6ed33",
407
+ "id": "0d5308cd",
884
408
  "metadata": {
885
409
  "execution": {
886
- "iopub.execute_input": "2025-04-16T14:59:37.677294Z",
887
- "iopub.status.busy": "2025-04-16T14:59:37.677184Z",
888
- "iopub.status.idle": "2025-04-16T14:59:37.865461Z",
889
- "shell.execute_reply": "2025-04-16T14:59:37.865159Z"
410
+ "iopub.execute_input": "2025-04-21T21:26:36.017436Z",
411
+ "iopub.status.busy": "2025-04-21T21:26:36.017297Z",
412
+ "iopub.status.idle": "2025-04-21T21:26:36.167418Z",
413
+ "shell.execute_reply": "2025-04-21T21:26:36.167083Z"
890
414
  }
891
415
  },
892
416
  "outputs": [
@@ -897,20 +421,6 @@
897
421
  "natural_pdf.search.searchable_mixin - INFO - Searching collection 'default_collection' via HaystackSearchService...\n"
898
422
  ]
899
423
  },
900
- {
901
- "name": "stderr",
902
- "output_type": "stream",
903
- "text": [
904
- "\u001b[2m2025-04-16T14:59:37.678388Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSearching collection 'default_collection' via HaystackSearchService...\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m244\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mSearching collection 'default_collection' via HaystackSearchService...\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.searchable_mixin\u001b[0m\n"
905
- ]
906
- },
907
- {
908
- "name": "stderr",
909
- "output_type": "stream",
910
- "text": [
911
- "[2025-04-16 17:59:37,677] [ INFO] searchable_mixin.py:244 - Searching collection 'default_collection' via HaystackSearchService...\n"
912
- ]
913
- },
914
424
  {
915
425
  "name": "stderr",
916
426
  "output_type": "stream",
@@ -918,20 +428,6 @@
918
428
  "natural_pdf.search.haystack_search_service - INFO - Search request for collection='default_collection', query_type=str, options=TextSearchOptions(top_k=10, retriever_top_k=20, filters=None, use_reranker=True, reranker_instance=None, reranker_model=None, reranker_api_key=None)\n"
919
429
  ]
920
430
  },
921
- {
922
- "name": "stderr",
923
- "output_type": "stream",
924
- "text": [
925
- "\u001b[2m2025-04-16T14:59:37.679015Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSearch request for collection='default_collection', query_type=str, options=TextSearchOptions(top_k=10, retriever_top_k=20, filters=None, use_reranker=True, reranker_instance=None, reranker_model=None, reranker_api_key=None)\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m318\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mSearch request for collection='default_collection', query_type=str, options=TextSearchOptions(top_k=10, retriever_top_k=20, filters=None, use_reranker=True, reranker_instance=None, reranker_model=None, reranker_api_key=None)\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.haystack_search_service\u001b[0m\n"
926
- ]
927
- },
928
- {
929
- "name": "stderr",
930
- "output_type": "stream",
931
- "text": [
932
- "[2025-04-16 17:59:37,678] [ INFO] haystack_search_service.py:318 - Search request for collection='default_collection', query_type=str, options=TextSearchOptions(top_k=10, retriever_top_k=20, filters=None, use_reranker=True, reranker_instance=None, reranker_model=None, reranker_api_key=None)\n"
933
- ]
934
- },
935
431
  {
936
432
  "name": "stderr",
937
433
  "output_type": "stream",
@@ -939,24 +435,10 @@
939
435
  "natural_pdf.search.haystack_search_service - INFO - Created SentenceTransformersTextEmbedder. Model: sentence-transformers/all-MiniLM-L6-v2, Device: ComponentDevice(_single_device=Device(type=<DeviceType.MPS: 'mps'>, id=None), _multiple_devices=None)\n"
940
436
  ]
941
437
  },
942
- {
943
- "name": "stderr",
944
- "output_type": "stream",
945
- "text": [
946
- "\u001b[2m2025-04-16T14:59:37.679709Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mCreated SentenceTransformersTextEmbedder. Model: sentence-transformers/all-MiniLM-L6-v2, Device: ComponentDevice(_single_device=Device(type=<DeviceType.MPS: 'mps'>, id=None), _multiple_devices=None)\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m164\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mCreated SentenceTransformersTextEmbedder. Model: sentence-transformers/all-MiniLM-L6-v2, Device: ComponentDevice(_single_device=Device(type=<DeviceType.MPS: 'mps'>, id=None), _multiple_devices=None)\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.haystack_search_service\u001b[0m\n"
947
- ]
948
- },
949
- {
950
- "name": "stderr",
951
- "output_type": "stream",
952
- "text": [
953
- "[2025-04-16 17:59:37,679] [ INFO] haystack_search_service.py:164 - Created SentenceTransformersTextEmbedder. Model: sentence-transformers/all-MiniLM-L6-v2, Device: ComponentDevice(_single_device=Device(type=<DeviceType.MPS: 'mps'>, id=None), _multiple_devices=None)\n"
954
- ]
955
- },
956
438
  {
957
439
  "data": {
958
440
  "application/vnd.jupyter.widget-view+json": {
959
- "model_id": "d256c819166642f68442fa041de1ba67",
441
+ "model_id": "4fe0753b29774d8daf7ecb3f89719349",
960
442
  "version_major": 2,
961
443
  "version_minor": 0
962
444
  },
@@ -974,20 +456,6 @@
974
456
  "natural_pdf.search.haystack_search_service - INFO - Running retrieval pipeline for collection 'default_collection'...\n"
975
457
  ]
976
458
  },
977
- {
978
- "name": "stderr",
979
- "output_type": "stream",
980
- "text": [
981
- "\u001b[2m2025-04-16T14:59:37.859154Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mRunning retrieval pipeline for collection 'default_collection'...\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m401\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mRunning retrieval pipeline for collection 'default_collection'...\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.haystack_search_service\u001b[0m\n"
982
- ]
983
- },
984
- {
985
- "name": "stderr",
986
- "output_type": "stream",
987
- "text": [
988
- "[2025-04-16 17:59:37,858] [ INFO] haystack_search_service.py:401 - Running retrieval pipeline for collection 'default_collection'...\n"
989
- ]
990
- },
991
459
  {
992
460
  "name": "stderr",
993
461
  "output_type": "stream",
@@ -995,20 +463,6 @@
995
463
  "natural_pdf.search.haystack_search_service - INFO - Retrieved 6 documents.\n"
996
464
  ]
997
465
  },
998
- {
999
- "name": "stderr",
1000
- "output_type": "stream",
1001
- "text": [
1002
- "\u001b[2m2025-04-16T14:59:37.863278Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mRetrieved 6 documents. \u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m410\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mRetrieved 6 documents.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.haystack_search_service\u001b[0m\n"
1003
- ]
1004
- },
1005
- {
1006
- "name": "stderr",
1007
- "output_type": "stream",
1008
- "text": [
1009
- "[2025-04-16 17:59:37,862] [ INFO] haystack_search_service.py:410 - Retrieved 6 documents.\n"
1010
- ]
1011
- },
1012
466
  {
1013
467
  "name": "stderr",
1014
468
  "output_type": "stream",
@@ -1016,20 +470,6 @@
1016
470
  "natural_pdf.search.searchable_mixin - INFO - SearchService returned 6 results from collection 'default_collection'.\n"
1017
471
  ]
1018
472
  },
1019
- {
1020
- "name": "stderr",
1021
- "output_type": "stream",
1022
- "text": [
1023
- "\u001b[2m2025-04-16T14:59:37.863850Z\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSearchService returned 6 results from collection 'default_collection'.\u001b[0m \u001b[36mlineno\u001b[0m=\u001b[35m266\u001b[0m \u001b[36mmessage\u001b[0m=\u001b[35mSearchService returned 6 results from collection 'default_collection'.\u001b[0m \u001b[36mmodule\u001b[0m=\u001b[35mnatural_pdf.search.searchable_mixin\u001b[0m\n"
1024
- ]
1025
- },
1026
- {
1027
- "name": "stderr",
1028
- "output_type": "stream",
1029
- "text": [
1030
- "[2025-04-16 17:59:37,863] [ INFO] searchable_mixin.py:266 - SearchService returned 6 results from collection 'default_collection'.\n"
1031
- ]
1032
- },
1033
473
  {
1034
474
  "name": "stdout",
1035
475
  "output_type": "stream",
@@ -1048,7 +488,7 @@
1048
488
  },
1049
489
  {
1050
490
  "cell_type": "markdown",
1051
- "id": "899900f2",
491
+ "id": "fe6158f2",
1052
492
  "metadata": {},
1053
493
  "source": [
1054
494
  "## Understanding Search Results\n",
@@ -1064,13 +504,13 @@
1064
504
  {
1065
505
  "cell_type": "code",
1066
506
  "execution_count": 5,
1067
- "id": "846312a5",
507
+ "id": "5ed7a221",
1068
508
  "metadata": {
1069
509
  "execution": {
1070
- "iopub.execute_input": "2025-04-16T14:59:37.867689Z",
1071
- "iopub.status.busy": "2025-04-16T14:59:37.867564Z",
1072
- "iopub.status.idle": "2025-04-16T14:59:37.870008Z",
1073
- "shell.execute_reply": "2025-04-16T14:59:37.869701Z"
510
+ "iopub.execute_input": "2025-04-21T21:26:36.168858Z",
511
+ "iopub.status.busy": "2025-04-21T21:26:36.168719Z",
512
+ "iopub.status.idle": "2025-04-21T21:26:36.171586Z",
513
+ "shell.execute_reply": "2025-04-21T21:26:36.171300Z"
1074
514
  }
1075
515
  },
1076
516
  "outputs": [
@@ -1078,32 +518,32 @@
1078
518
  "name": "stdout",
1079
519
  "output_type": "stream",
1080
520
  "text": [
1081
- " 1. PDF: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpofyt17qz.pdf\n",
521
+ " 1. PDF: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmp67aw1giy.pdf\n",
1082
522
  " Page: 2 (Score: 0.0708)\n",
1083
523
  " Snippet: \n",
1084
524
  " \n",
1085
525
  " Library Weeding Log ...\n",
1086
- " 2. PDF: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpofyt17qz.pdf\n",
526
+ " 2. PDF: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmp67aw1giy.pdf\n",
1087
527
  " Page: 5 (Score: 0.0669)\n",
1088
528
  " Snippet: \n",
1089
529
  " \n",
1090
530
  " Library Weeding Log ...\n",
1091
- " 3. PDF: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpwq_3f750.pdf\n",
531
+ " 3. PDF: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmp0qxzzh1m.pdf\n",
1092
532
  " Page: 1 (Score: -0.0040)\n",
1093
533
  " Snippet: \n",
1094
534
  " \n",
1095
535
  " ...\n",
1096
- " 4. PDF: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpofyt17qz.pdf\n",
536
+ " 4. PDF: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmp67aw1giy.pdf\n",
1097
537
  " Page: 4 (Score: -0.0245)\n",
1098
538
  " Snippet: \n",
1099
539
  " \n",
1100
540
  " Library Weeding Log ...\n",
1101
- " 5. PDF: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpofyt17qz.pdf\n",
541
+ " 5. PDF: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmp67aw1giy.pdf\n",
1102
542
  " Page: 3 (Score: -0.0445)\n",
1103
543
  " Snippet: \n",
1104
544
  " \n",
1105
545
  " Library Weeding Log ...\n",
1106
- " 6. PDF: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmpofyt17qz.pdf\n",
546
+ " 6. PDF: /var/folders/25/h3prywj14qb0mlkl2s8bxq5m0000gn/T/tmp67aw1giy.pdf\n",
1107
547
  " Page: 1 (Score: -0.0473)\n",
1108
548
  " Snippet: \n",
1109
549
  " \n",
@@ -1129,7 +569,7 @@
1129
569
  },
1130
570
  {
1131
571
  "cell_type": "markdown",
1132
- "id": "0f9261b5",
572
+ "id": "1c628c5f",
1133
573
  "metadata": {},
1134
574
  "source": [
1135
575
  "Semantic search allows you to efficiently query large sets of documents to find the most relevant information without needing exact keyword matches, leveraging the meaning and context of your query. "
@@ -1157,7 +597,25 @@
1157
597
  "widgets": {
1158
598
  "application/vnd.jupyter.widget-state+json": {
1159
599
  "state": {
1160
- "141f2a3636e04c3f9bfde6ffa25253ea": {
600
+ "026c1486481a4a5cb64c3e3e4dfea542": {
601
+ "model_module": "@jupyter-widgets/controls",
602
+ "model_module_version": "2.0.0",
603
+ "model_name": "HTMLStyleModel",
604
+ "state": {
605
+ "_model_module": "@jupyter-widgets/controls",
606
+ "_model_module_version": "2.0.0",
607
+ "_model_name": "HTMLStyleModel",
608
+ "_view_count": null,
609
+ "_view_module": "@jupyter-widgets/base",
610
+ "_view_module_version": "2.0.0",
611
+ "_view_name": "StyleView",
612
+ "background": null,
613
+ "description_width": "",
614
+ "font_size": null,
615
+ "text_color": null
616
+ }
617
+ },
618
+ "0cecc462036e46ceabe7e0bbf41f086c": {
1161
619
  "model_module": "@jupyter-widgets/base",
1162
620
  "model_module_version": "2.0.0",
1163
621
  "model_name": "LayoutModel",
@@ -1210,23 +668,56 @@
1210
668
  "width": null
1211
669
  }
1212
670
  },
1213
- "2a420c66cd7c43229bd55cf377d1e00d": {
671
+ "1c916b704c77462ebf088c5b45543e05": {
1214
672
  "model_module": "@jupyter-widgets/controls",
1215
673
  "model_module_version": "2.0.0",
1216
- "model_name": "ProgressStyleModel",
674
+ "model_name": "HTMLModel",
1217
675
  "state": {
676
+ "_dom_classes": [],
1218
677
  "_model_module": "@jupyter-widgets/controls",
1219
678
  "_model_module_version": "2.0.0",
1220
- "_model_name": "ProgressStyleModel",
679
+ "_model_name": "HTMLModel",
1221
680
  "_view_count": null,
1222
- "_view_module": "@jupyter-widgets/base",
681
+ "_view_module": "@jupyter-widgets/controls",
1223
682
  "_view_module_version": "2.0.0",
1224
- "_view_name": "StyleView",
1225
- "bar_color": null,
1226
- "description_width": ""
683
+ "_view_name": "HTMLView",
684
+ "description": "",
685
+ "description_allow_html": false,
686
+ "layout": "IPY_MODEL_bbd4b71814b24819bc02e8a3ae7cf936",
687
+ "placeholder": "​",
688
+ "style": "IPY_MODEL_026c1486481a4a5cb64c3e3e4dfea542",
689
+ "tabbable": null,
690
+ "tooltip": null,
691
+ "value": "Batches: 100%"
692
+ }
693
+ },
694
+ "23da5426a33a4f2e8eba26ae5371beb0": {
695
+ "model_module": "@jupyter-widgets/controls",
696
+ "model_module_version": "2.0.0",
697
+ "model_name": "FloatProgressModel",
698
+ "state": {
699
+ "_dom_classes": [],
700
+ "_model_module": "@jupyter-widgets/controls",
701
+ "_model_module_version": "2.0.0",
702
+ "_model_name": "FloatProgressModel",
703
+ "_view_count": null,
704
+ "_view_module": "@jupyter-widgets/controls",
705
+ "_view_module_version": "2.0.0",
706
+ "_view_name": "ProgressView",
707
+ "bar_style": "success",
708
+ "description": "",
709
+ "description_allow_html": false,
710
+ "layout": "IPY_MODEL_b9c7a538fab94ea08463c82c24344a64",
711
+ "max": 1.0,
712
+ "min": 0.0,
713
+ "orientation": "horizontal",
714
+ "style": "IPY_MODEL_f58162f746b140a8bc38b978a971b841",
715
+ "tabbable": null,
716
+ "tooltip": null,
717
+ "value": 1.0
1227
718
  }
1228
719
  },
1229
- "33c5442a4c63404899f3bfd8e5ee84c4": {
720
+ "327031d1fca04e19ba9fb925ea1f07af": {
1230
721
  "model_module": "@jupyter-widgets/controls",
1231
722
  "model_module_version": "2.0.0",
1232
723
  "model_name": "HTMLModel",
@@ -1241,33 +732,170 @@
1241
732
  "_view_name": "HTMLView",
1242
733
  "description": "",
1243
734
  "description_allow_html": false,
1244
- "layout": "IPY_MODEL_141f2a3636e04c3f9bfde6ffa25253ea",
735
+ "layout": "IPY_MODEL_dca88061cb6f43748dcdc1132ecccc90",
1245
736
  "placeholder": "​",
1246
- "style": "IPY_MODEL_4046efa4d5604c58a344822710b99068",
737
+ "style": "IPY_MODEL_675d17109fee467495b1e03599ac9261",
1247
738
  "tabbable": null,
1248
739
  "tooltip": null,
1249
- "value": " 1/1 [00:00&lt;00:00,  5.67it/s]"
740
+ "value": " 1/1 [00:00&lt;00:00,  7.20it/s]"
741
+ }
742
+ },
743
+ "3ccf196c0d0d4dd089991bd63d435c4d": {
744
+ "model_module": "@jupyter-widgets/base",
745
+ "model_module_version": "2.0.0",
746
+ "model_name": "LayoutModel",
747
+ "state": {
748
+ "_model_module": "@jupyter-widgets/base",
749
+ "_model_module_version": "2.0.0",
750
+ "_model_name": "LayoutModel",
751
+ "_view_count": null,
752
+ "_view_module": "@jupyter-widgets/base",
753
+ "_view_module_version": "2.0.0",
754
+ "_view_name": "LayoutView",
755
+ "align_content": null,
756
+ "align_items": null,
757
+ "align_self": null,
758
+ "border_bottom": null,
759
+ "border_left": null,
760
+ "border_right": null,
761
+ "border_top": null,
762
+ "bottom": null,
763
+ "display": null,
764
+ "flex": null,
765
+ "flex_flow": null,
766
+ "grid_area": null,
767
+ "grid_auto_columns": null,
768
+ "grid_auto_flow": null,
769
+ "grid_auto_rows": null,
770
+ "grid_column": null,
771
+ "grid_gap": null,
772
+ "grid_row": null,
773
+ "grid_template_areas": null,
774
+ "grid_template_columns": null,
775
+ "grid_template_rows": null,
776
+ "height": null,
777
+ "justify_content": null,
778
+ "justify_items": null,
779
+ "left": null,
780
+ "margin": null,
781
+ "max_height": null,
782
+ "max_width": null,
783
+ "min_height": null,
784
+ "min_width": null,
785
+ "object_fit": null,
786
+ "object_position": null,
787
+ "order": null,
788
+ "overflow": null,
789
+ "padding": null,
790
+ "right": null,
791
+ "top": null,
792
+ "visibility": null,
793
+ "width": null
794
+ }
795
+ },
796
+ "4fe0753b29774d8daf7ecb3f89719349": {
797
+ "model_module": "@jupyter-widgets/controls",
798
+ "model_module_version": "2.0.0",
799
+ "model_name": "HBoxModel",
800
+ "state": {
801
+ "_dom_classes": [],
802
+ "_model_module": "@jupyter-widgets/controls",
803
+ "_model_module_version": "2.0.0",
804
+ "_model_name": "HBoxModel",
805
+ "_view_count": null,
806
+ "_view_module": "@jupyter-widgets/controls",
807
+ "_view_module_version": "2.0.0",
808
+ "_view_name": "HBoxView",
809
+ "box_style": "",
810
+ "children": [
811
+ "IPY_MODEL_8aae53bc7d2d495ca6eb05f98d6fc8da",
812
+ "IPY_MODEL_23da5426a33a4f2e8eba26ae5371beb0",
813
+ "IPY_MODEL_327031d1fca04e19ba9fb925ea1f07af"
814
+ ],
815
+ "layout": "IPY_MODEL_f991f9535ca04bc2bee7f1964f1132db",
816
+ "tabbable": null,
817
+ "tooltip": null
818
+ }
819
+ },
820
+ "548fdb05df104726991dc64580769247": {
821
+ "model_module": "@jupyter-widgets/controls",
822
+ "model_module_version": "2.0.0",
823
+ "model_name": "HTMLStyleModel",
824
+ "state": {
825
+ "_model_module": "@jupyter-widgets/controls",
826
+ "_model_module_version": "2.0.0",
827
+ "_model_name": "HTMLStyleModel",
828
+ "_view_count": null,
829
+ "_view_module": "@jupyter-widgets/base",
830
+ "_view_module_version": "2.0.0",
831
+ "_view_name": "StyleView",
832
+ "background": null,
833
+ "description_width": "",
834
+ "font_size": null,
835
+ "text_color": null
1250
836
  }
1251
837
  },
1252
- "4046efa4d5604c58a344822710b99068": {
838
+ "675d17109fee467495b1e03599ac9261": {
1253
839
  "model_module": "@jupyter-widgets/controls",
1254
840
  "model_module_version": "2.0.0",
1255
841
  "model_name": "HTMLStyleModel",
1256
842
  "state": {
1257
843
  "_model_module": "@jupyter-widgets/controls",
1258
844
  "_model_module_version": "2.0.0",
1259
- "_model_name": "HTMLStyleModel",
845
+ "_model_name": "HTMLStyleModel",
846
+ "_view_count": null,
847
+ "_view_module": "@jupyter-widgets/base",
848
+ "_view_module_version": "2.0.0",
849
+ "_view_name": "StyleView",
850
+ "background": null,
851
+ "description_width": "",
852
+ "font_size": null,
853
+ "text_color": null
854
+ }
855
+ },
856
+ "7ce5089ebf82424abba28acc0ce522da": {
857
+ "model_module": "@jupyter-widgets/controls",
858
+ "model_module_version": "2.0.0",
859
+ "model_name": "ProgressStyleModel",
860
+ "state": {
861
+ "_model_module": "@jupyter-widgets/controls",
862
+ "_model_module_version": "2.0.0",
863
+ "_model_name": "ProgressStyleModel",
864
+ "_view_count": null,
865
+ "_view_module": "@jupyter-widgets/base",
866
+ "_view_module_version": "2.0.0",
867
+ "_view_name": "StyleView",
868
+ "bar_color": null,
869
+ "description_width": ""
870
+ }
871
+ },
872
+ "8328a5952f5645f3b31ab5351fb16a9a": {
873
+ "model_module": "@jupyter-widgets/controls",
874
+ "model_module_version": "2.0.0",
875
+ "model_name": "FloatProgressModel",
876
+ "state": {
877
+ "_dom_classes": [],
878
+ "_model_module": "@jupyter-widgets/controls",
879
+ "_model_module_version": "2.0.0",
880
+ "_model_name": "FloatProgressModel",
1260
881
  "_view_count": null,
1261
- "_view_module": "@jupyter-widgets/base",
882
+ "_view_module": "@jupyter-widgets/controls",
1262
883
  "_view_module_version": "2.0.0",
1263
- "_view_name": "StyleView",
1264
- "background": null,
1265
- "description_width": "",
1266
- "font_size": null,
1267
- "text_color": null
884
+ "_view_name": "ProgressView",
885
+ "bar_style": "success",
886
+ "description": "",
887
+ "description_allow_html": false,
888
+ "layout": "IPY_MODEL_96691282e844404ca0686f8777371ba9",
889
+ "max": 1.0,
890
+ "min": 0.0,
891
+ "orientation": "horizontal",
892
+ "style": "IPY_MODEL_7ce5089ebf82424abba28acc0ce522da",
893
+ "tabbable": null,
894
+ "tooltip": null,
895
+ "value": 1.0
1268
896
  }
1269
897
  },
1270
- "41578f932e1e4a549a30f80e2a598676": {
898
+ "8aae53bc7d2d495ca6eb05f98d6fc8da": {
1271
899
  "model_module": "@jupyter-widgets/controls",
1272
900
  "model_module_version": "2.0.0",
1273
901
  "model_name": "HTMLModel",
@@ -1282,15 +910,15 @@
1282
910
  "_view_name": "HTMLView",
1283
911
  "description": "",
1284
912
  "description_allow_html": false,
1285
- "layout": "IPY_MODEL_f21b692c698847d8b9e4a514be59eb4f",
913
+ "layout": "IPY_MODEL_8e70848dd5404708b60063a404310668",
1286
914
  "placeholder": "​",
1287
- "style": "IPY_MODEL_4dd085e5a6c8425b932640ba38cf3c2c",
915
+ "style": "IPY_MODEL_b9f037775be645de95f0c49ce550385a",
1288
916
  "tabbable": null,
1289
917
  "tooltip": null,
1290
918
  "value": "Batches: 100%"
1291
919
  }
1292
920
  },
1293
- "4569f5281db341da993745bf202d0a05": {
921
+ "8e70848dd5404708b60063a404310668": {
1294
922
  "model_module": "@jupyter-widgets/base",
1295
923
  "model_module_version": "2.0.0",
1296
924
  "model_name": "LayoutModel",
@@ -1343,25 +971,7 @@
1343
971
  "width": null
1344
972
  }
1345
973
  },
1346
- "4dd085e5a6c8425b932640ba38cf3c2c": {
1347
- "model_module": "@jupyter-widgets/controls",
1348
- "model_module_version": "2.0.0",
1349
- "model_name": "HTMLStyleModel",
1350
- "state": {
1351
- "_model_module": "@jupyter-widgets/controls",
1352
- "_model_module_version": "2.0.0",
1353
- "_model_name": "HTMLStyleModel",
1354
- "_view_count": null,
1355
- "_view_module": "@jupyter-widgets/base",
1356
- "_view_module_version": "2.0.0",
1357
- "_view_name": "StyleView",
1358
- "background": null,
1359
- "description_width": "",
1360
- "font_size": null,
1361
- "text_color": null
1362
- }
1363
- },
1364
- "570e89d1cf884bec858eda7795166c72": {
974
+ "96691282e844404ca0686f8777371ba9": {
1365
975
  "model_module": "@jupyter-widgets/base",
1366
976
  "model_module_version": "2.0.0",
1367
977
  "model_name": "LayoutModel",
@@ -1414,7 +1024,7 @@
1414
1024
  "width": null
1415
1025
  }
1416
1026
  },
1417
- "58d4efb95b3b4c11a7f27a3e92067ca3": {
1027
+ "b9c7a538fab94ea08463c82c24344a64": {
1418
1028
  "model_module": "@jupyter-widgets/base",
1419
1029
  "model_module_version": "2.0.0",
1420
1030
  "model_name": "LayoutModel",
@@ -1467,7 +1077,25 @@
1467
1077
  "width": null
1468
1078
  }
1469
1079
  },
1470
- "58e6754f29874f6d9afd0f2fcaa6477c": {
1080
+ "b9f037775be645de95f0c49ce550385a": {
1081
+ "model_module": "@jupyter-widgets/controls",
1082
+ "model_module_version": "2.0.0",
1083
+ "model_name": "HTMLStyleModel",
1084
+ "state": {
1085
+ "_model_module": "@jupyter-widgets/controls",
1086
+ "_model_module_version": "2.0.0",
1087
+ "_model_name": "HTMLStyleModel",
1088
+ "_view_count": null,
1089
+ "_view_module": "@jupyter-widgets/base",
1090
+ "_view_module_version": "2.0.0",
1091
+ "_view_name": "StyleView",
1092
+ "background": null,
1093
+ "description_width": "",
1094
+ "font_size": null,
1095
+ "text_color": null
1096
+ }
1097
+ },
1098
+ "bbd4b71814b24819bc02e8a3ae7cf936": {
1471
1099
  "model_module": "@jupyter-widgets/base",
1472
1100
  "model_module_version": "2.0.0",
1473
1101
  "model_name": "LayoutModel",
@@ -1520,113 +1148,31 @@
1520
1148
  "width": null
1521
1149
  }
1522
1150
  },
1523
- "7699c3d8986d4a6e8d8bb4217053059e": {
1524
- "model_module": "@jupyter-widgets/controls",
1525
- "model_module_version": "2.0.0",
1526
- "model_name": "HTMLStyleModel",
1527
- "state": {
1528
- "_model_module": "@jupyter-widgets/controls",
1529
- "_model_module_version": "2.0.0",
1530
- "_model_name": "HTMLStyleModel",
1531
- "_view_count": null,
1532
- "_view_module": "@jupyter-widgets/base",
1533
- "_view_module_version": "2.0.0",
1534
- "_view_name": "StyleView",
1535
- "background": null,
1536
- "description_width": "",
1537
- "font_size": null,
1538
- "text_color": null
1539
- }
1540
- },
1541
- "7bd2a232a56d480ca596b415ef3ed717": {
1542
- "model_module": "@jupyter-widgets/controls",
1543
- "model_module_version": "2.0.0",
1544
- "model_name": "HTMLModel",
1545
- "state": {
1546
- "_dom_classes": [],
1547
- "_model_module": "@jupyter-widgets/controls",
1548
- "_model_module_version": "2.0.0",
1549
- "_model_name": "HTMLModel",
1550
- "_view_count": null,
1551
- "_view_module": "@jupyter-widgets/controls",
1552
- "_view_module_version": "2.0.0",
1553
- "_view_name": "HTMLView",
1554
- "description": "",
1555
- "description_allow_html": false,
1556
- "layout": "IPY_MODEL_570e89d1cf884bec858eda7795166c72",
1557
- "placeholder": "​",
1558
- "style": "IPY_MODEL_e119ef47c621423185cd7d198c61d218",
1559
- "tabbable": null,
1560
- "tooltip": null,
1561
- "value": " 1/1 [00:00&lt;00:00,  4.09it/s]"
1562
- }
1563
- },
1564
- "7d81b94c96664753b5c7f2eda5405f17": {
1565
- "model_module": "@jupyter-widgets/controls",
1566
- "model_module_version": "2.0.0",
1567
- "model_name": "FloatProgressModel",
1568
- "state": {
1569
- "_dom_classes": [],
1570
- "_model_module": "@jupyter-widgets/controls",
1571
- "_model_module_version": "2.0.0",
1572
- "_model_name": "FloatProgressModel",
1573
- "_view_count": null,
1574
- "_view_module": "@jupyter-widgets/controls",
1575
- "_view_module_version": "2.0.0",
1576
- "_view_name": "ProgressView",
1577
- "bar_style": "success",
1578
- "description": "",
1579
- "description_allow_html": false,
1580
- "layout": "IPY_MODEL_bba7faa7f1874023b8b3f44e0980a1dc",
1581
- "max": 1.0,
1582
- "min": 0.0,
1583
- "orientation": "horizontal",
1584
- "style": "IPY_MODEL_2a420c66cd7c43229bd55cf377d1e00d",
1585
- "tabbable": null,
1586
- "tooltip": null,
1587
- "value": 1.0
1588
- }
1589
- },
1590
- "81bee5ad297641bda75ce7076242489d": {
1591
- "model_module": "@jupyter-widgets/controls",
1592
- "model_module_version": "2.0.0",
1593
- "model_name": "ProgressStyleModel",
1594
- "state": {
1595
- "_model_module": "@jupyter-widgets/controls",
1596
- "_model_module_version": "2.0.0",
1597
- "_model_name": "ProgressStyleModel",
1598
- "_view_count": null,
1599
- "_view_module": "@jupyter-widgets/base",
1600
- "_view_module_version": "2.0.0",
1601
- "_view_name": "StyleView",
1602
- "bar_color": null,
1603
- "description_width": ""
1604
- }
1605
- },
1606
- "8a00c11016924cebbb3cbc2c8a06e4e5": {
1151
+ "cf2741c35c4e430a80c721891fe023d9": {
1607
1152
  "model_module": "@jupyter-widgets/controls",
1608
1153
  "model_module_version": "2.0.0",
1609
- "model_name": "HTMLModel",
1154
+ "model_name": "HBoxModel",
1610
1155
  "state": {
1611
1156
  "_dom_classes": [],
1612
1157
  "_model_module": "@jupyter-widgets/controls",
1613
1158
  "_model_module_version": "2.0.0",
1614
- "_model_name": "HTMLModel",
1159
+ "_model_name": "HBoxModel",
1615
1160
  "_view_count": null,
1616
1161
  "_view_module": "@jupyter-widgets/controls",
1617
1162
  "_view_module_version": "2.0.0",
1618
- "_view_name": "HTMLView",
1619
- "description": "",
1620
- "description_allow_html": false,
1621
- "layout": "IPY_MODEL_58e6754f29874f6d9afd0f2fcaa6477c",
1622
- "placeholder": "​",
1623
- "style": "IPY_MODEL_7699c3d8986d4a6e8d8bb4217053059e",
1163
+ "_view_name": "HBoxView",
1164
+ "box_style": "",
1165
+ "children": [
1166
+ "IPY_MODEL_1c916b704c77462ebf088c5b45543e05",
1167
+ "IPY_MODEL_8328a5952f5645f3b31ab5351fb16a9a",
1168
+ "IPY_MODEL_e567efbe84ed461d85b57fc9d69d9d9c"
1169
+ ],
1170
+ "layout": "IPY_MODEL_0cecc462036e46ceabe7e0bbf41f086c",
1624
1171
  "tabbable": null,
1625
- "tooltip": null,
1626
- "value": "Batches: 100%"
1172
+ "tooltip": null
1627
1173
  }
1628
1174
  },
1629
- "bba7faa7f1874023b8b3f44e0980a1dc": {
1175
+ "dca88061cb6f43748dcdc1132ecccc90": {
1630
1176
  "model_module": "@jupyter-widgets/base",
1631
1177
  "model_module_version": "2.0.0",
1632
1178
  "model_name": "LayoutModel",
@@ -1679,152 +1225,46 @@
1679
1225
  "width": null
1680
1226
  }
1681
1227
  },
1682
- "c680fa26e0ff4501b6ef8eacd599090e": {
1683
- "model_module": "@jupyter-widgets/controls",
1684
- "model_module_version": "2.0.0",
1685
- "model_name": "HBoxModel",
1686
- "state": {
1687
- "_dom_classes": [],
1688
- "_model_module": "@jupyter-widgets/controls",
1689
- "_model_module_version": "2.0.0",
1690
- "_model_name": "HBoxModel",
1691
- "_view_count": null,
1692
- "_view_module": "@jupyter-widgets/controls",
1693
- "_view_module_version": "2.0.0",
1694
- "_view_name": "HBoxView",
1695
- "box_style": "",
1696
- "children": [
1697
- "IPY_MODEL_8a00c11016924cebbb3cbc2c8a06e4e5",
1698
- "IPY_MODEL_7d81b94c96664753b5c7f2eda5405f17",
1699
- "IPY_MODEL_7bd2a232a56d480ca596b415ef3ed717"
1700
- ],
1701
- "layout": "IPY_MODEL_4569f5281db341da993745bf202d0a05",
1702
- "tabbable": null,
1703
- "tooltip": null
1704
- }
1705
- },
1706
- "d256c819166642f68442fa041de1ba67": {
1707
- "model_module": "@jupyter-widgets/controls",
1708
- "model_module_version": "2.0.0",
1709
- "model_name": "HBoxModel",
1710
- "state": {
1711
- "_dom_classes": [],
1712
- "_model_module": "@jupyter-widgets/controls",
1713
- "_model_module_version": "2.0.0",
1714
- "_model_name": "HBoxModel",
1715
- "_view_count": null,
1716
- "_view_module": "@jupyter-widgets/controls",
1717
- "_view_module_version": "2.0.0",
1718
- "_view_name": "HBoxView",
1719
- "box_style": "",
1720
- "children": [
1721
- "IPY_MODEL_41578f932e1e4a549a30f80e2a598676",
1722
- "IPY_MODEL_dbbfdddf99314100a558b197a6d393a4",
1723
- "IPY_MODEL_33c5442a4c63404899f3bfd8e5ee84c4"
1724
- ],
1725
- "layout": "IPY_MODEL_58d4efb95b3b4c11a7f27a3e92067ca3",
1726
- "tabbable": null,
1727
- "tooltip": null
1728
- }
1729
- },
1730
- "dbbfdddf99314100a558b197a6d393a4": {
1228
+ "e567efbe84ed461d85b57fc9d69d9d9c": {
1731
1229
  "model_module": "@jupyter-widgets/controls",
1732
1230
  "model_module_version": "2.0.0",
1733
- "model_name": "FloatProgressModel",
1231
+ "model_name": "HTMLModel",
1734
1232
  "state": {
1735
1233
  "_dom_classes": [],
1736
1234
  "_model_module": "@jupyter-widgets/controls",
1737
1235
  "_model_module_version": "2.0.0",
1738
- "_model_name": "FloatProgressModel",
1236
+ "_model_name": "HTMLModel",
1739
1237
  "_view_count": null,
1740
1238
  "_view_module": "@jupyter-widgets/controls",
1741
1239
  "_view_module_version": "2.0.0",
1742
- "_view_name": "ProgressView",
1743
- "bar_style": "success",
1240
+ "_view_name": "HTMLView",
1744
1241
  "description": "",
1745
1242
  "description_allow_html": false,
1746
- "layout": "IPY_MODEL_fc757532ed1d453882911701c1c95190",
1747
- "max": 1.0,
1748
- "min": 0.0,
1749
- "orientation": "horizontal",
1750
- "style": "IPY_MODEL_81bee5ad297641bda75ce7076242489d",
1243
+ "layout": "IPY_MODEL_3ccf196c0d0d4dd089991bd63d435c4d",
1244
+ "placeholder": "​",
1245
+ "style": "IPY_MODEL_548fdb05df104726991dc64580769247",
1751
1246
  "tabbable": null,
1752
1247
  "tooltip": null,
1753
- "value": 1.0
1248
+ "value": " 1/1 [00:00&lt;00:00,  4.09it/s]"
1754
1249
  }
1755
1250
  },
1756
- "e119ef47c621423185cd7d198c61d218": {
1251
+ "f58162f746b140a8bc38b978a971b841": {
1757
1252
  "model_module": "@jupyter-widgets/controls",
1758
1253
  "model_module_version": "2.0.0",
1759
- "model_name": "HTMLStyleModel",
1254
+ "model_name": "ProgressStyleModel",
1760
1255
  "state": {
1761
1256
  "_model_module": "@jupyter-widgets/controls",
1762
1257
  "_model_module_version": "2.0.0",
1763
- "_model_name": "HTMLStyleModel",
1258
+ "_model_name": "ProgressStyleModel",
1764
1259
  "_view_count": null,
1765
1260
  "_view_module": "@jupyter-widgets/base",
1766
1261
  "_view_module_version": "2.0.0",
1767
1262
  "_view_name": "StyleView",
1768
- "background": null,
1769
- "description_width": "",
1770
- "font_size": null,
1771
- "text_color": null
1772
- }
1773
- },
1774
- "f21b692c698847d8b9e4a514be59eb4f": {
1775
- "model_module": "@jupyter-widgets/base",
1776
- "model_module_version": "2.0.0",
1777
- "model_name": "LayoutModel",
1778
- "state": {
1779
- "_model_module": "@jupyter-widgets/base",
1780
- "_model_module_version": "2.0.0",
1781
- "_model_name": "LayoutModel",
1782
- "_view_count": null,
1783
- "_view_module": "@jupyter-widgets/base",
1784
- "_view_module_version": "2.0.0",
1785
- "_view_name": "LayoutView",
1786
- "align_content": null,
1787
- "align_items": null,
1788
- "align_self": null,
1789
- "border_bottom": null,
1790
- "border_left": null,
1791
- "border_right": null,
1792
- "border_top": null,
1793
- "bottom": null,
1794
- "display": null,
1795
- "flex": null,
1796
- "flex_flow": null,
1797
- "grid_area": null,
1798
- "grid_auto_columns": null,
1799
- "grid_auto_flow": null,
1800
- "grid_auto_rows": null,
1801
- "grid_column": null,
1802
- "grid_gap": null,
1803
- "grid_row": null,
1804
- "grid_template_areas": null,
1805
- "grid_template_columns": null,
1806
- "grid_template_rows": null,
1807
- "height": null,
1808
- "justify_content": null,
1809
- "justify_items": null,
1810
- "left": null,
1811
- "margin": null,
1812
- "max_height": null,
1813
- "max_width": null,
1814
- "min_height": null,
1815
- "min_width": null,
1816
- "object_fit": null,
1817
- "object_position": null,
1818
- "order": null,
1819
- "overflow": null,
1820
- "padding": null,
1821
- "right": null,
1822
- "top": null,
1823
- "visibility": null,
1824
- "width": null
1263
+ "bar_color": null,
1264
+ "description_width": ""
1825
1265
  }
1826
1266
  },
1827
- "fc757532ed1d453882911701c1c95190": {
1267
+ "f991f9535ca04bc2bee7f1964f1132db": {
1828
1268
  "model_module": "@jupyter-widgets/base",
1829
1269
  "model_module_version": "2.0.0",
1830
1270
  "model_name": "LayoutModel",