natural-pdf 0.1.10__py3-none-any.whl → 0.1.12__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 (31) hide show
  1. natural_pdf/__init__.py +29 -40
  2. natural_pdf/analyzers/text_options.py +9 -1
  3. natural_pdf/analyzers/text_structure.py +371 -58
  4. natural_pdf/classification/manager.py +1 -1
  5. natural_pdf/core/element_manager.py +11 -1
  6. natural_pdf/core/highlighting_service.py +120 -40
  7. natural_pdf/core/page.py +20 -18
  8. natural_pdf/core/pdf.py +146 -13
  9. natural_pdf/elements/base.py +17 -0
  10. natural_pdf/elements/collections.py +374 -30
  11. natural_pdf/elements/region.py +45 -14
  12. natural_pdf/exporters/data/__init__.py +0 -0
  13. natural_pdf/exporters/data/pdf.ttf +0 -0
  14. natural_pdf/exporters/data/sRGB.icc +0 -0
  15. natural_pdf/exporters/hocr.py +519 -0
  16. natural_pdf/exporters/hocr_font.py +136 -0
  17. natural_pdf/exporters/original_pdf.py +127 -0
  18. natural_pdf/exporters/searchable_pdf.py +2 -12
  19. natural_pdf/ocr/engine_surya.py +1 -1
  20. natural_pdf/search/__init__.py +65 -52
  21. natural_pdf/search/lancedb_search_service.py +325 -0
  22. natural_pdf/search/numpy_search_service.py +255 -0
  23. natural_pdf/search/searchable_mixin.py +25 -71
  24. natural_pdf/widgets/viewer.py +22 -31
  25. {natural_pdf-0.1.10.dist-info → natural_pdf-0.1.12.dist-info}/METADATA +54 -50
  26. {natural_pdf-0.1.10.dist-info → natural_pdf-0.1.12.dist-info}/RECORD +29 -23
  27. {natural_pdf-0.1.10.dist-info → natural_pdf-0.1.12.dist-info}/WHEEL +1 -1
  28. natural_pdf/search/haystack_search_service.py +0 -687
  29. natural_pdf/search/haystack_utils.py +0 -474
  30. {natural_pdf-0.1.10.dist-info → natural_pdf-0.1.12.dist-info}/licenses/LICENSE +0 -0
  31. {natural_pdf-0.1.10.dist-info → natural_pdf-0.1.12.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: natural-pdf
3
- Version: 0.1.10
3
+ Version: 0.1.12
4
4
  Summary: A more intuitive interface for working with PDFs
5
5
  Author-email: Jonathan Soma <jonathan.soma@gmail.com>
6
6
  License-Expression: MIT
@@ -12,20 +12,16 @@ Requires-Python: >=3.9
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
14
  Requires-Dist: pdfplumber
15
- Requires-Dist: Pillow
15
+ Requires-Dist: pillow
16
16
  Requires-Dist: colour
17
17
  Requires-Dist: numpy
18
18
  Requires-Dist: urllib3
19
19
  Requires-Dist: tqdm
20
20
  Requires-Dist: pydantic
21
- Provides-Extra: interactive
22
- Requires-Dist: ipywidgets<9.0.0,>=7.0.0; extra == "interactive"
23
- Provides-Extra: haystack
24
- Requires-Dist: haystack-ai; extra == "haystack"
25
- Requires-Dist: lancedb-haystack; extra == "haystack"
26
- Requires-Dist: lancedb; extra == "haystack"
27
- Requires-Dist: sentence-transformers; extra == "haystack"
28
- Requires-Dist: natural-pdf[core-ml]; extra == "haystack"
21
+ Requires-Dist: jenkspy
22
+ Requires-Dist: pikepdf>=9.7.0
23
+ Provides-Extra: viewer
24
+ Requires-Dist: ipywidgets<9.0.0,>=7.0.0; extra == "viewer"
29
25
  Provides-Extra: easyocr
30
26
  Requires-Dist: easyocr; extra == "easyocr"
31
27
  Requires-Dist: natural-pdf[core-ml]; extra == "easyocr"
@@ -41,19 +37,25 @@ Requires-Dist: natural-pdf[core-ml]; extra == "surya"
41
37
  Provides-Extra: doctr
42
38
  Requires-Dist: python-doctr[torch]; extra == "doctr"
43
39
  Requires-Dist: natural-pdf[core-ml]; extra == "doctr"
44
- Provides-Extra: qa
45
- Requires-Dist: natural-pdf[core-ml]; extra == "qa"
46
40
  Provides-Extra: docling
47
41
  Requires-Dist: docling; extra == "docling"
48
42
  Requires-Dist: natural-pdf[core-ml]; extra == "docling"
49
43
  Provides-Extra: llm
50
44
  Requires-Dist: openai>=1.0; extra == "llm"
51
- Provides-Extra: classification
52
- Requires-Dist: sentence-transformers; extra == "classification"
53
- Requires-Dist: timm; extra == "classification"
54
- Requires-Dist: natural-pdf[core-ml]; extra == "classification"
55
45
  Provides-Extra: test
56
46
  Requires-Dist: pytest; extra == "test"
47
+ Provides-Extra: search
48
+ Requires-Dist: lancedb; extra == "search"
49
+ Requires-Dist: pyarrow; extra == "search"
50
+ Provides-Extra: favorites
51
+ Requires-Dist: natural-pdf[deskew]; extra == "favorites"
52
+ Requires-Dist: natural-pdf[llm]; extra == "favorites"
53
+ Requires-Dist: natural-pdf[surya]; extra == "favorites"
54
+ Requires-Dist: natural-pdf[easyocr]; extra == "favorites"
55
+ Requires-Dist: natural-pdf[layout_yolo]; extra == "favorites"
56
+ Requires-Dist: natural-pdf[ocr-export]; extra == "favorites"
57
+ Requires-Dist: natural-pdf[viewer]; extra == "favorites"
58
+ Requires-Dist: natural-pdf[search]; extra == "favorites"
57
59
  Provides-Extra: dev
58
60
  Requires-Dist: black; extra == "dev"
59
61
  Requires-Dist: isort; extra == "dev"
@@ -67,31 +69,33 @@ Requires-Dist: pipdeptree; extra == "dev"
67
69
  Requires-Dist: nbformat; extra == "dev"
68
70
  Requires-Dist: jupytext; extra == "dev"
69
71
  Requires-Dist: nbclient; extra == "dev"
72
+ Requires-Dist: ipykernel; extra == "dev"
70
73
  Provides-Extra: deskew
71
74
  Requires-Dist: deskew>=1.5; extra == "deskew"
72
75
  Requires-Dist: img2pdf; extra == "deskew"
73
76
  Provides-Extra: all
74
- Requires-Dist: natural-pdf[interactive]; extra == "all"
75
- Requires-Dist: natural-pdf[haystack]; extra == "all"
77
+ Requires-Dist: natural-pdf[viewer]; extra == "all"
76
78
  Requires-Dist: natural-pdf[easyocr]; extra == "all"
77
79
  Requires-Dist: natural-pdf[paddle]; extra == "all"
78
80
  Requires-Dist: natural-pdf[layout_yolo]; extra == "all"
79
81
  Requires-Dist: natural-pdf[surya]; extra == "all"
80
82
  Requires-Dist: natural-pdf[doctr]; extra == "all"
81
- Requires-Dist: natural-pdf[qa]; extra == "all"
82
83
  Requires-Dist: natural-pdf[ocr-export]; extra == "all"
83
84
  Requires-Dist: natural-pdf[docling]; extra == "all"
84
85
  Requires-Dist: natural-pdf[llm]; extra == "all"
85
- Requires-Dist: natural-pdf[classification]; extra == "all"
86
+ Requires-Dist: natural-pdf[core-ml]; extra == "all"
86
87
  Requires-Dist: natural-pdf[deskew]; extra == "all"
87
88
  Requires-Dist: natural-pdf[test]; extra == "all"
89
+ Requires-Dist: natural-pdf[search]; extra == "all"
88
90
  Provides-Extra: core-ml
89
91
  Requires-Dist: torch; extra == "core-ml"
90
92
  Requires-Dist: torchvision; extra == "core-ml"
91
93
  Requires-Dist: transformers[sentencepiece]; extra == "core-ml"
92
94
  Requires-Dist: huggingface_hub; extra == "core-ml"
95
+ Requires-Dist: sentence-transformers; extra == "core-ml"
96
+ Requires-Dist: numpy; extra == "core-ml"
97
+ Requires-Dist: timm; extra == "core-ml"
93
98
  Provides-Extra: ocr-export
94
- Requires-Dist: ocrmypdf; extra == "ocr-export"
95
99
  Requires-Dist: pikepdf; extra == "ocr-export"
96
100
  Provides-Extra: export-extras
97
101
  Requires-Dist: jupytext; extra == "export-extras"
@@ -115,26 +119,11 @@ Natural PDF lets you find and extract content from PDFs using simple code that m
115
119
  pip install natural-pdf
116
120
  ```
117
121
 
118
- For optional features like specific OCR engines, layout analysis models, or the interactive Jupyter widget, you can install extras:
122
+ For optional features like specific OCR engines, layout analysis models, or the interactive Jupyter widget, you can install one to two million different extras. If you just want the greatest hits:
119
123
 
120
124
  ```bash
121
- # Example: Install with EasyOCR support
122
- pip install natural-pdf[easyocr]
123
- pip install natural-pdf[surya]
124
- pip install natural-pdf[paddle]
125
-
126
- # Example: Install support for features using Large Language Models (e.g., via OpenAI-compatible APIs)
127
- pip install natural-pdf[llm]
128
- # (May require setting API key environment variables, e.g., GOOGLE_API_KEY for Gemini)
129
-
130
- # Example: Install with interactive viewer support
131
- pip install natural-pdf[interactive]
132
-
133
- # Example: Install with semantic search support (Haystack)
134
- pip install natural-pdf[haystack]
135
-
136
- # Install everything
137
- pip install natural-pdf[all]
125
+ # deskewing, OCR (surya) + layout analysis (yolo), interactive browsing
126
+ pip install natural-pdf[favorites]
138
127
  ```
139
128
 
140
129
  See the [installation guide](https://jsoma.github.io/natural-pdf/installation/) for more details on extras.
@@ -148,25 +137,26 @@ from natural_pdf import PDF
148
137
  pdf = PDF('document.pdf')
149
138
  page = pdf.pages[0]
150
139
 
140
+ # Extract all of the text on the page
141
+ page.extract_text()
142
+
151
143
  # Find elements using CSS-like selectors
152
144
  heading = page.find('text:contains("Summary"):bold')
153
145
 
154
146
  # Extract content below the heading
155
147
  content = heading.below().extract_text()
156
- print("Content below Summary:", content[:100] + "...")
157
148
 
158
- # Exclude headers/footers automatically (example)
159
- # You might define these based on common text or position
160
- page.add_exclusion(page.find('text:contains("CONFIDENTIAL")').above())
161
- page.add_exclusion(page.find_all('line')[-1].below())
149
+ # Examine all the bold text on the page
150
+ page.find_all('text:bold').show()
162
151
 
163
- # Extract clean text from the page
164
- clean_text = page.extract_text()
165
- print("\nClean page text:", clean_text[:200] + "...")
152
+ # Exclude parts of the page from selectors/extractors
153
+ header = page.find('text:contains("CONFIDENTIAL")').above()
154
+ footer = page.find_all('line')[-1].below()
155
+ page.add_exclusion(header)
156
+ page.add_exclusion(footer)
166
157
 
167
- # Highlight the heading and view the page
168
- heading.highlight(color='red')
169
- page.to_image()
158
+ # Extract clean text from the page ignoring exclusions
159
+ clean_text = page.extract_text()
170
160
  ```
171
161
 
172
162
  And as a fun bonus, `page.viewer()` will provide an interactive method to explore the PDF.
@@ -187,3 +177,17 @@ Natural PDF offers a range of features for working with PDFs:
187
177
  ## Learn More
188
178
 
189
179
  Dive deeper into the features and explore advanced usage in the [**Complete Documentation**](https://jsoma.github.io/natural-pdf).
180
+
181
+ ## Best friends
182
+
183
+ Natural PDF sits on top of a *lot* of fantastic tools and mdoels, some of which are:
184
+
185
+ - [pdfplumber](https://github.com/jsvine/pdfplumber)
186
+ - [EasyOCR](https://www.jaided.ai/easyocr/)
187
+ - [PaddleOCR](https://paddlepaddle.github.io/PaddleOCR/latest/en/index.html)
188
+ - [Surya](https://github.com/VikParuchuri/surya)
189
+ - A specific [YOLO](https://github.com/opendatalab/DocLayout-YOLO)
190
+ - [deskew](https://github.com/sbrunner/deskew)
191
+ - [doctr](https://github.com/mindee/doctr)
192
+ - [docling](https://github.com/docling-project/docling)
193
+ - [Hugging Face](https://huggingface.co/models)
@@ -1,7 +1,7 @@
1
- natural_pdf/__init__.py,sha256=LBrQcFOGooaUsTSAk6zrPCQqu0IM-ClvJLasexEk64k,2728
1
+ natural_pdf/__init__.py,sha256=0sCYgb9BAV5OnpD_1AswMuOLuXNmpe3OLJpv_6p3tgw,2449
2
2
  natural_pdf/analyzers/__init__.py,sha256=dIXjsMqoxKmd9OOnSBzn12wvdIz7D7YNQRAnXslpJSM,142
3
- natural_pdf/analyzers/text_options.py,sha256=nE2E1pp4psDPpxmtarvNtEQsgozPkyFRjv0TVP2HTyU,2865
4
- natural_pdf/analyzers/text_structure.py,sha256=Uhxc7aYB1jddkiwRTEPOg_Te2HfOua4z_OtgP1m3org,12794
3
+ natural_pdf/analyzers/text_options.py,sha256=qEkDaYWla0rIM_gszEOsu52q7C_dAfV81P2HLJZM2sw,3333
4
+ natural_pdf/analyzers/text_structure.py,sha256=VfKTsTFrK877sC0grsis9jK3rrgp0Mbp13VWEbukTcs,28437
5
5
  natural_pdf/analyzers/utils.py,sha256=PYbzJzSAHZ7JsMes84WIrSbA0zkjJGs0CLvIeINsf_k,2100
6
6
  natural_pdf/analyzers/layout/__init__.py,sha256=oq1uJ5UkGGMbBKGirV1aRKK3hxAUyjTLywYkPCQH1f0,33
7
7
  natural_pdf/analyzers/layout/base.py,sha256=bYawhmc_0xqKG-xbxUSiazIU1om-aBox5Jh8qDqv-eM,6451
@@ -15,28 +15,34 @@ natural_pdf/analyzers/layout/pdfplumber_table_finder.py,sha256=Tk0Q7wv7nGYPo69lh
15
15
  natural_pdf/analyzers/layout/surya.py,sha256=4RdnhRxSS3i3Ns5mFhOA9-P0xd7Ms19uZuKvUGQfEBI,9789
16
16
  natural_pdf/analyzers/layout/tatr.py,sha256=cVr0ZyhY2mNLAKZ4DGMm-b7XNJpILKh8x8ZpyDeUhLk,15032
17
17
  natural_pdf/analyzers/layout/yolo.py,sha256=ANo2U4EZgeN2eYKM1bZIuysiuJLgwl4JeQchrRxOKwA,8388
18
- natural_pdf/classification/manager.py,sha256=RxJch8xVu8Me6_T2Kh7ZqUNaAKlXvfyCZD0hRc4Hk6w,17929
18
+ natural_pdf/classification/manager.py,sha256=4iHoZQ6W541efFvwJt38K-4n5svYH3uYk0ixWPCt7do,17922
19
19
  natural_pdf/classification/mixin.py,sha256=hhX9qWPShpOq_-mgoEq0GUWnutBnNMo3YdUlxwyNWMA,6781
20
20
  natural_pdf/classification/results.py,sha256=El1dY7cBQVOB5lP-uj52dWgH6Y7TeQgJOVcZD-OLjes,2778
21
21
  natural_pdf/collections/mixins.py,sha256=sj76Cn6EdBtb5f-bdAV-1qpdixX8tI4BzPccPiYLI1w,5117
22
22
  natural_pdf/collections/pdf_collection.py,sha256=obHizc2KR4ZiAspodaPOeMgfpoW3aKg_G0goBHlrFJI,32018
23
23
  natural_pdf/core/__init__.py,sha256=QC8H4M3KbXwMFiQORZ0pdPlzx1Ix6oKKQSS7Ib2KEaA,38
24
- natural_pdf/core/element_manager.py,sha256=knRN6qXxV-6KZCj2GUOyiqRi83DjJzL77TmKGeiD08Y,25144
25
- natural_pdf/core/highlighting_service.py,sha256=wINdRxq63_CYYA81EwuCRqhNKimn0dNKyoKWuzkirc0,31959
26
- natural_pdf/core/page.py,sha256=icJLu6jRbkD3iOE8r60XPkQZ8FN3ZcKo5TT5MVGkGl0,105122
27
- natural_pdf/core/pdf.py,sha256=gOvLumJZaHXdDwpxbX9HcC_Rea4HaYMemBdYg5GX7gQ,63837
24
+ natural_pdf/core/element_manager.py,sha256=_UdXu51sLi6STzc8Pj4k8R721G3yJixXDLuRHn3hmr8,25731
25
+ natural_pdf/core/highlighting_service.py,sha256=F1s9KEVkZb3Srtp1_ayQJayp1ZvDf9FcChsZdLk4yWk,37138
26
+ natural_pdf/core/page.py,sha256=XoHPdsg7YUQIkayD0U1cQ7pNR8NCgV9xkV0rVAO7n3s,105167
27
+ natural_pdf/core/pdf.py,sha256=ssXJviTVKyVZuyiSKv1vE0GW7BACNXBhovIUbPm5MZ4,69511
28
28
  natural_pdf/elements/__init__.py,sha256=S8XeiNWJ1WcgnyYKdYV1yxQlAxCCO3FfITT8MQwNbyk,41
29
- natural_pdf/elements/base.py,sha256=7vVCPQyEHifh4LyBuv0kLTqr_gNbbEMc4SoiJmLfEUQ,37585
30
- natural_pdf/elements/collections.py,sha256=AN0WrrQYfCmcRS0-PHP4RQHxxdpcWnDuH2cWnmqtDE0,97184
29
+ natural_pdf/elements/base.py,sha256=qKU95sJMw6uiIuez57i-3SmMIHvi9ctv7jwIWJI9qnQ,38415
30
+ natural_pdf/elements/collections.py,sha256=gPj_7eONu6zLyYHnWdPRvgHd___FfTW9mg8iwEBsgxg,112383
31
31
  natural_pdf/elements/line.py,sha256=7cow3xMUKhAj7zoQz7OaB1eIH2_a8B__LB7iGJ4Mb0o,4612
32
32
  natural_pdf/elements/rect.py,sha256=kiVa3e377ZnqIOXc89d9ZSY4EcmDxtccdtUw-HOQzpw,3796
33
- natural_pdf/elements/region.py,sha256=LfyB_9DCw5Tzn_G9xsjFz2FfKBOHRqGIND4DQWoA7KM,97324
33
+ natural_pdf/elements/region.py,sha256=HWqO_Or_wi7pu82w_LUoKHa7r_64AEOJDdmBXSWeZ50,98848
34
34
  natural_pdf/elements/text.py,sha256=13HvVZGinj2Vm_fFCAnqi7hohtoKvnpCp3VCfkpeAbc,11146
35
35
  natural_pdf/export/mixin.py,sha256=L1q3MIEFWuvie4j4_EmW7GT3NerbZ1as0XMUoqTS7gM,5083
36
36
  natural_pdf/exporters/__init__.py,sha256=7MnvRLLQdwtg-ULu-8uK8C84GsKiJamyhRw_GgWhw7k,151
37
37
  natural_pdf/exporters/base.py,sha256=XhR1xlkHOh7suOuX7mWbsj1h2o1pZNet-OAS5YCJyeI,2115
38
+ natural_pdf/exporters/hocr.py,sha256=MOb5sTxe-GlMSOtmqp3p4SY_ZigwOtmd4sj_zMRCIQY,19907
39
+ natural_pdf/exporters/hocr_font.py,sha256=1wsGOMj6zoaRN2rxCwrv4MMLGawpNz984WgXpmWekgw,4574
40
+ natural_pdf/exporters/original_pdf.py,sha256=zsZPg_lUoEerKIzzoEw-qGdM5XBg_LZhFJeVKnCUp4o,5054
38
41
  natural_pdf/exporters/paddleocr.py,sha256=BYpdtJI7S8rBkI2dkRESx2epVAZOTfzqU-rjJnUQ5jQ,16249
39
- natural_pdf/exporters/searchable_pdf.py,sha256=qsaPsnbOOaZHA_aplfZbwQnBoK9KghWm-wzbyRRomeY,16859
42
+ natural_pdf/exporters/searchable_pdf.py,sha256=G2Tc4tpDXSYIufXJlkA8ppW_3DuzHAaweYKae33pI_c,16290
43
+ natural_pdf/exporters/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
+ natural_pdf/exporters/data/pdf.ttf,sha256=x4RUIJJaI9iO2DCmOVe4r4Wmao2vjZ_JDoQ2c7LvGlk,572
45
+ natural_pdf/exporters/data/sRGB.icc,sha256=KpLUuuRQt22LCqQhk9-XTXX2Jzjs6_dPAcXnWxKpV5Y,6922
40
46
  natural_pdf/extraction/manager.py,sha256=mUBbfgLG5Pl31wmajXwyipdEJb_dZ5I-y8GnWw7IzGo,4969
41
47
  natural_pdf/extraction/mixin.py,sha256=eKbr70VibpbtfjvCE80lTFuYHzq_BoVtOHjznL_GMRA,11719
42
48
  natural_pdf/extraction/result.py,sha256=c1vLguCR6l95cvg-BJJmZvL_MPg2McJaczge55bKZMg,934
@@ -45,19 +51,19 @@ natural_pdf/ocr/engine.py,sha256=ZBC1tZNM5EDbGDJJmZI9mNHr4nCMLEZvUFhiJq8GdF4,874
45
51
  natural_pdf/ocr/engine_doctr.py,sha256=519WpvSHgwP6Hv24tci_YHFX7XPlaxOnlREN_YG-Yys,16331
46
52
  natural_pdf/ocr/engine_easyocr.py,sha256=9TbxJjmhWFrzM8mcNnZjoRtIDr6gwpuwKm4-Zfub2-8,9281
47
53
  natural_pdf/ocr/engine_paddle.py,sha256=2nIrvLBBAiZG1BxVo3eFVJulA6YGoOTXw_RN98p_BUk,6184
48
- natural_pdf/ocr/engine_surya.py,sha256=iySjG-Dahgh0cLICfbMtOcwUpRFcZjo-5Ed5Zwz-o5Y,4805
54
+ natural_pdf/ocr/engine_surya.py,sha256=CQHpPecCYsJsr7pEvEyubAf5FJFs7vFHAm_0cGGr-A4,4839
49
55
  natural_pdf/ocr/ocr_factory.py,sha256=gBFXdFs7E4aCynHz06sQsAhaO3s8yhgoFgN5nyxtg9c,5221
50
56
  natural_pdf/ocr/ocr_manager.py,sha256=f0q68ynGYVPkF4D3WnufxmHWD5R1jW5Z_1czTEi9JVU,13931
51
57
  natural_pdf/ocr/ocr_options.py,sha256=ZvtnFn1kPkFEoWveQ13uy6B-ofquP0gHEi4tBHrjqCE,6438
52
58
  natural_pdf/ocr/utils.py,sha256=OxuHwDbHWj6setvnC0QYwMHrAjxGkhmLzWHpMqqGupA,4397
53
59
  natural_pdf/qa/__init__.py,sha256=Pjo62JTnUNEjGNsC437mvsS5KQ5m7X_BibGvavR9AW0,108
54
60
  natural_pdf/qa/document_qa.py,sha256=Jw4yyq3Vifn57D0ANmOfUlZeG8CJjBkItZBV-8ZAmos,15111
55
- natural_pdf/search/__init__.py,sha256=gdGlW3kTCw87iXMwcIesbLkUsnv5UKJmF-_1ZMR0pfQ,3339
56
- natural_pdf/search/haystack_search_service.py,sha256=UHr2UWNBetG3MZ1n_1LnV9oUe5fC-rY9p-V0j00JjQM,30339
57
- natural_pdf/search/haystack_utils.py,sha256=6Hv5DeLSF4AVDrB_aFJZGB3XpSCLQ45dXLKEd4yG2tU,18978
61
+ natural_pdf/search/__init__.py,sha256=72n_Mj_AhF_RCIoBBhZ6EZKjbILM8omelXZ99fXw7n4,3688
62
+ natural_pdf/search/lancedb_search_service.py,sha256=tW7ONPcWGY1HKle_7OqCXRnMCI-aKL-AqneKz2YbLlM,13706
63
+ natural_pdf/search/numpy_search_service.py,sha256=3_8fx7NV-15jBokOU73mcxrznxPxzVQnOlDHf3dpo28,10117
58
64
  natural_pdf/search/search_options.py,sha256=sq_e8_jSROicD94b_xtDtLnjEr_Zsy4icjzPkK0a8QA,3566
59
65
  natural_pdf/search/search_service_protocol.py,sha256=Dl-Q-CrutkhZwI69scbW9EWPeYM63qxB60_EA7YqIYo,6699
60
- natural_pdf/search/searchable_mixin.py,sha256=M2a6FaFVM0vcfh7FgjDH6BLhS-7ggeVpcfft4OOBDxY,26390
66
+ natural_pdf/search/searchable_mixin.py,sha256=dZbaHv8Go3TJNqxoPtnp9Dr0Ftxuf_44RpBeIRXkPxc,23534
61
67
  natural_pdf/selectors/__init__.py,sha256=oZGeqSv53EqmIZOhcnawuaGGlRg1h79vArXuZCWKm4A,123
62
68
  natural_pdf/selectors/parser.py,sha256=oI3ezkB6sIyrq_nLJrbaBaBZktXwEp_HG_gKQlVSVcs,24447
63
69
  natural_pdf/templates/__init__.py,sha256=jYBxzfi73vew0f6yhIh1MlRxw4F_TVN2hKQR0YXOFe0,20
@@ -72,9 +78,9 @@ natural_pdf/utils/text_extraction.py,sha256=z6Jhy11pakYCsEpkvh8ldw6DkUFsYF1hCL9Y
72
78
  natural_pdf/utils/tqdm_utils.py,sha256=wV3RXvqog26eWEFEqjt2LkGnLswmO1GXaVGSqgS7tAY,1601
73
79
  natural_pdf/utils/visualization.py,sha256=30pRWQdsRJh2pSObh-brKVsFgC1n8tHmSrta_UDnVPw,8989
74
80
  natural_pdf/widgets/__init__.py,sha256=O2fSDo604wDAP6UwUkmBq3eT91RSqHwBpAOQXq92S8s,214
75
- natural_pdf/widgets/viewer.py,sha256=dC_hlPlosc08gsDc3bdAa8chOKtAoH9QFU6mrGOG9vE,39532
76
- natural_pdf-0.1.10.dist-info/licenses/LICENSE,sha256=9zfwINwJlarbDmdh6iJV4QUG54QSJlSAUcnC1YiC_Ns,1074
77
- natural_pdf-0.1.10.dist-info/METADATA,sha256=gjUsfmnbqrdiHcaH6L1qiw6VX4MBlWjVj5HqlDnhuQY,7401
78
- natural_pdf-0.1.10.dist-info/WHEEL,sha256=wXxTzcEDnjrTwFYjLPcsW_7_XihufBwmpiBeiXNBGEA,91
79
- natural_pdf-0.1.10.dist-info/top_level.txt,sha256=Cyw1zmNDlUZfb5moU-WUWGprrwH7ln_8LDGdmMHF1xI,17
80
- natural_pdf-0.1.10.dist-info/RECORD,,
81
+ natural_pdf/widgets/viewer.py,sha256=ekgXTEfA48GrR-JjpCpgyBCXdf4IubV0pAXDJozcU7A,39196
82
+ natural_pdf-0.1.12.dist-info/licenses/LICENSE,sha256=9zfwINwJlarbDmdh6iJV4QUG54QSJlSAUcnC1YiC_Ns,1074
83
+ natural_pdf-0.1.12.dist-info/METADATA,sha256=GpzOi_m7e7vOS1vlUsrN0WIc0ncvhxvGvpEuPr5UGY8,7653
84
+ natural_pdf-0.1.12.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
85
+ natural_pdf-0.1.12.dist-info/top_level.txt,sha256=Cyw1zmNDlUZfb5moU-WUWGprrwH7ln_8LDGdmMHF1xI,17
86
+ natural_pdf-0.1.12.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.1.0)
2
+ Generator: setuptools (80.7.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5