natural-pdf 0.1.21__py3-none-any.whl → 0.1.23__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.
@@ -698,6 +698,28 @@ def _build_filter_list(selector: Dict[str, Any], **kwargs) -> List[Dict[str, Any
698
698
 
699
699
  filter_lambda = contains_check
700
700
 
701
+ # --- Handle :startswith and :starts-with (alias) --- #
702
+ elif name in ("starts-with", "startswith") and args is not None:
703
+ filter_name = f"pseudo-class :{name}({args!r})"
704
+
705
+ def startswith_check(element, arg=args):
706
+ if not hasattr(element, "text") or not element.text:
707
+ return False
708
+ return str(element.text).startswith(str(arg))
709
+
710
+ filter_lambda = startswith_check
711
+
712
+ # --- Handle :endswith and :ends-with (alias) --- #
713
+ elif name in ("ends-with", "endswith") and args is not None:
714
+ filter_name = f"pseudo-class :{name}({args!r})"
715
+
716
+ def endswith_check(element, arg=args):
717
+ if not hasattr(element, "text") or not element.text:
718
+ return False
719
+ return str(element.text).endswith(str(arg))
720
+
721
+ filter_lambda = endswith_check
722
+
701
723
  elif name == "starts-with" and args is not None:
702
724
  filter_lambda = (
703
725
  lambda el, arg=args: hasattr(el, "text")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: natural-pdf
3
- Version: 0.1.21
3
+ Version: 0.1.23
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
@@ -21,14 +21,7 @@ Requires-Dist: urllib3
21
21
  Requires-Dist: tqdm
22
22
  Requires-Dist: pydantic
23
23
  Requires-Dist: jenkspy
24
- Requires-Dist: pikepdf
25
24
  Requires-Dist: scipy
26
- Requires-Dist: torch
27
- Requires-Dist: torchvision
28
- Requires-Dist: transformers[sentencepiece]
29
- Requires-Dist: huggingface_hub>=0.29.3
30
- Requires-Dist: sentence-transformers
31
- Requires-Dist: timm
32
25
  Requires-Dist: ipywidgets>=7.0.0
33
26
  Provides-Extra: test
34
27
  Requires-Dist: pytest; extra == "test"
@@ -58,6 +51,7 @@ Requires-Dist: natural-pdf[test]; extra == "all"
58
51
  Requires-Dist: natural-pdf[search]; extra == "all"
59
52
  Requires-Dist: natural-pdf[favorites]; extra == "all"
60
53
  Requires-Dist: natural-pdf[export-extras]; extra == "all"
54
+ Requires-Dist: natural-pdf[ai]; extra == "all"
61
55
  Provides-Extra: deskew
62
56
  Requires-Dist: deskew>=1.5; extra == "deskew"
63
57
  Requires-Dist: img2pdf; extra == "deskew"
@@ -69,6 +63,15 @@ Requires-Dist: pikepdf; extra == "ocr-export"
69
63
  Provides-Extra: export-extras
70
64
  Requires-Dist: jupytext; extra == "export-extras"
71
65
  Requires-Dist: nbformat; extra == "export-extras"
66
+ Provides-Extra: ai
67
+ Requires-Dist: sentence-transformers; extra == "ai"
68
+ Requires-Dist: torch; extra == "ai"
69
+ Requires-Dist: torchvision; extra == "ai"
70
+ Requires-Dist: transformers[sentencepiece]; extra == "ai"
71
+ Requires-Dist: huggingface_hub>=0.29.3; extra == "ai"
72
+ Requires-Dist: timm; extra == "ai"
73
+ Requires-Dist: doclayout_yolo; extra == "ai"
74
+ Requires-Dist: easyocr; extra == "ai"
72
75
  Dynamic: license-file
73
76
 
74
77
  # Natural PDF
@@ -88,25 +91,29 @@ Natural PDF lets you find and extract content from PDFs using simple code that m
88
91
  pip install natural-pdf
89
92
  ```
90
93
 
91
- Need OCR engines, layout models, or other heavy add-ons? Install the **core** once, then use the helper CLI to pull in exactly what you need:
94
+ Need OCR engines, layout models, or other heavy add-ons? Install the **core** once, then use the helper `npdf` command to pull in exactly what you need:
92
95
 
93
96
  ```bash
94
- # add PaddleOCR (+paddlex) after the fact
95
- npdf install paddle
97
+ # Everything you need for classification, document-QA, semantic search, etc.
98
+ npdf install ai
96
99
 
97
100
  # Surya OCR and the YOLO Doc-Layout detector in one go
98
101
  npdf install surya yolo
99
102
 
103
+ # add PaddleOCR (+paddlex) after the fact
104
+ npdf install paddle
105
+
100
106
  # see what's already on your machine
101
107
  npdf list
102
108
  ```
103
109
 
104
- Light-weight extras such as `deskew` or `search` can still be added with
105
- classic PEP-508 markers if you prefer:
110
+ Lightweight extras such as `deskew` or `search` can still be added with
111
+ classic `pip install`:
106
112
 
107
113
  ```bash
108
114
  pip install "natural-pdf[deskew]"
109
115
  pip install "natural-pdf[search]"
116
+ pip install "natural-pdf[ai]"
110
117
  ```
111
118
 
112
119
  More details in the [installation guide](https://jsoma.github.io/natural-pdf/installation/).
@@ -117,7 +124,7 @@ More details in the [installation guide](https://jsoma.github.io/natural-pdf/ins
117
124
  from natural_pdf import PDF
118
125
 
119
126
  # Open a PDF
120
- pdf = PDF('document.pdf')
127
+ pdf = PDF('https://github.com/jsoma/natural-pdf/raw/refs/heads/main/pdfs/01-practice.pdf')
121
128
  page = pdf.pages[0]
122
129
 
123
130
  # Extract all of the text on the page
@@ -1,7 +1,7 @@
1
1
  natural_pdf/__init__.py,sha256=qDFJNF8sbEDO-2WSFAxoWEM8updOUP6dB-ckya0kxfs,3275
2
- natural_pdf/cli.py,sha256=0nAGVO2f_40E3G9c3Q0bfK5mhROyUJH5W25-YJVLMIo,4749
2
+ natural_pdf/cli.py,sha256=IXrP2lCHihr-ed-CFiDbMTnSsutQa1j1PYALOLGbpsc,4019
3
3
  natural_pdf/analyzers/__init__.py,sha256=dIXjsMqoxKmd9OOnSBzn12wvdIz7D7YNQRAnXslpJSM,142
4
- natural_pdf/analyzers/shape_detection_mixin.py,sha256=HHefg-v7CJMxYiJHxdGOdqdtbWe9yk4OBoW3a_aRrjM,81798
4
+ natural_pdf/analyzers/shape_detection_mixin.py,sha256=blpeHMWl6nXlutAByfdi6zjfmcyaDpdv2S7IR4l0WO0,81783
5
5
  natural_pdf/analyzers/text_options.py,sha256=qEkDaYWla0rIM_gszEOsu52q7C_dAfV81P2HLJZM2sw,3333
6
6
  natural_pdf/analyzers/text_structure.py,sha256=VfKTsTFrK877sC0grsis9jK3rrgp0Mbp13VWEbukTcs,28437
7
7
  natural_pdf/analyzers/utils.py,sha256=PYbzJzSAHZ7JsMes84WIrSbA0zkjJGs0CLvIeINsf_k,2100
@@ -18,27 +18,27 @@ natural_pdf/analyzers/layout/surya.py,sha256=4RdnhRxSS3i3Ns5mFhOA9-P0xd7Ms19uZuK
18
18
  natural_pdf/analyzers/layout/table_structure_utils.py,sha256=nISZDBd46RPYkFHxbQyIHwg9WweG4DslpoYJ31OMJYA,2768
19
19
  natural_pdf/analyzers/layout/tatr.py,sha256=cVr0ZyhY2mNLAKZ4DGMm-b7XNJpILKh8x8ZpyDeUhLk,15032
20
20
  natural_pdf/analyzers/layout/yolo.py,sha256=Iw8qsIOHg2lUP7z9GsmkOm3c9kJ-Ywk01Oej50kZgDw,8360
21
- natural_pdf/classification/manager.py,sha256=pzuTP-34W9N3im1ZFhCfQpOu37VSHEx4JHoHNxyy6o0,18894
22
- natural_pdf/classification/mixin.py,sha256=_XtoqCMqj1nxZYskIV2RbVYiVVcEWzFwae4s5vpzC74,6566
23
- natural_pdf/classification/results.py,sha256=El1dY7cBQVOB5lP-uj52dWgH6Y7TeQgJOVcZD-OLjes,2778
21
+ natural_pdf/classification/manager.py,sha256=7HOyHdjMJtC9DfzI8OXAREnGDpXaAgSfTFVC42n3tVQ,18889
22
+ natural_pdf/classification/mixin.py,sha256=nYpmHQ4BlrealdPtIJt-_idME5o-xKLKNuAdIHzWL6c,7580
23
+ natural_pdf/classification/results.py,sha256=Mcay-xLBHbYoZ8U7f4gMj2IhhH_yORNEkZHWdWJzmsU,3239
24
24
  natural_pdf/collections/mixins.py,sha256=sj76Cn6EdBtb5f-bdAV-1qpdixX8tI4BzPccPiYLI1w,5117
25
25
  natural_pdf/collections/pdf_collection.py,sha256=HLlyakM--23ZOeHDPucoM6Tw3yUyMXm0SSoqJwxRc2E,30744
26
26
  natural_pdf/core/__init__.py,sha256=QC8H4M3KbXwMFiQORZ0pdPlzx1Ix6oKKQSS7Ib2KEaA,38
27
27
  natural_pdf/core/element_manager.py,sha256=_UdXu51sLi6STzc8Pj4k8R721G3yJixXDLuRHn3hmr8,25731
28
- natural_pdf/core/highlighting_service.py,sha256=_kQUS6_BBvsLBuSZloFrVag6jN90KzHa0ULyGBjufSs,36955
29
- natural_pdf/core/page.py,sha256=i3DriIQwoO4RuSrkrCXv44Dz8OL9KXPa2y4GhsD1y18,118324
30
- natural_pdf/core/pdf.py,sha256=yBvb1iGw9gwVPJ3Rm1EBaZ8_g60TuW_Elhg2EOcJMzc,73871
28
+ natural_pdf/core/highlighting_service.py,sha256=wWoU2kJ_JBbxKV3NWEjqU6DLvmlwME9sTntk-TDqOfs,38223
29
+ natural_pdf/core/page.py,sha256=U4GRy_zdoTB4sx4EPrAIKg4beIQ8atJsY5HX_jWfDjg,118953
30
+ natural_pdf/core/pdf.py,sha256=qsSW4RxOJRmCnweLPMs0NhzkRfiAVdghTgnh4D_wuO4,74295
31
31
  natural_pdf/describe/__init__.py,sha256=B3zjuHjFI_dFuBLgXR1Q4v7c72fVDyk84d2hs0H4KV8,561
32
- natural_pdf/describe/base.py,sha256=7USCFIl4mI5b15LTVkwvhAn_mngMwhwxCnVYaZz5Vdc,16842
33
- natural_pdf/describe/elements.py,sha256=BOkz2wDhGh6P8NOm6pSNxitgmVokLTISztaFhrxMcdw,12717
32
+ natural_pdf/describe/base.py,sha256=LAZLc_thK2u2surgGd0Pk7CN2uVaZK9AbMOE3-1RmQ4,16842
33
+ natural_pdf/describe/elements.py,sha256=xD8wwR1z5IKat7RIwoAwQRUEL6zJTEwcOKorF4F-xPg,12717
34
34
  natural_pdf/describe/mixin.py,sha256=U0x6v8r57KQb8qC3VVo64hvhfXQWsti8vdKBM7AXnMo,3116
35
35
  natural_pdf/describe/summary.py,sha256=dPtjrn6fQ8nL0F74RITX2vXlDX7ZgaX9JQPnJB-S_XQ,6735
36
36
  natural_pdf/elements/__init__.py,sha256=S8XeiNWJ1WcgnyYKdYV1yxQlAxCCO3FfITT8MQwNbyk,41
37
- natural_pdf/elements/base.py,sha256=IlAeyzV66xMrxVx9U3ocGPekzGUBJgKkAiJ5kpvCSAg,39675
38
- natural_pdf/elements/collections.py,sha256=vgVZsVC3xxRF2S5KW7L0JKa-NSUFnqURk50NtvlwbcM,122113
37
+ natural_pdf/elements/base.py,sha256=iTIy6FfQj48llZkm7wERnTky3VTmUgkYfQytRuyueZo,43304
38
+ natural_pdf/elements/collections.py,sha256=zaqJ8pr0dmYwv1gPBs24oXfZExpSIX4URDRox-QLj98,123173
39
39
  natural_pdf/elements/line.py,sha256=300kSFBDUBIudfeQtH_tzW9gTYRgRKUDPiTABw6J-BE,4782
40
40
  natural_pdf/elements/rect.py,sha256=kiVa3e377ZnqIOXc89d9ZSY4EcmDxtccdtUw-HOQzpw,3796
41
- natural_pdf/elements/region.py,sha256=hBklYKcXJWyxayu9todYQOZ-d9KVDtqeV-CIt9IcSn8,123400
41
+ natural_pdf/elements/region.py,sha256=BAOriJuQYovppV0S5xI6tq5YEuzffiMQneDvHuT22Uo,118562
42
42
  natural_pdf/elements/text.py,sha256=13HvVZGinj2Vm_fFCAnqi7hohtoKvnpCp3VCfkpeAbc,11146
43
43
  natural_pdf/export/mixin.py,sha256=L1q3MIEFWuvie4j4_EmW7GT3NerbZ1as0XMUoqTS7gM,5083
44
44
  natural_pdf/exporters/__init__.py,sha256=g1WRPCDVzceaUUsm8dchPhzdHFSjYM0NfRyc8iN0mtE,644
@@ -46,31 +46,32 @@ natural_pdf/exporters/base.py,sha256=XhR1xlkHOh7suOuX7mWbsj1h2o1pZNet-OAS5YCJyeI
46
46
  natural_pdf/exporters/hocr.py,sha256=wksvJvWLSxuAfhYzg_0T2_W8eqDoMgAVC-gwZ9FoO_k,19969
47
47
  natural_pdf/exporters/hocr_font.py,sha256=1wsGOMj6zoaRN2rxCwrv4MMLGawpNz984WgXpmWekgw,4574
48
48
  natural_pdf/exporters/original_pdf.py,sha256=dtvC4er6TWOfqq-n24Pejw3mlAuPd8IVyihggJtcf0s,6634
49
- natural_pdf/exporters/paddleocr.py,sha256=IAG2p9YeImYcsIvb6a_L5mMrKarvaMaDvRrvdlY6bX4,19489
49
+ natural_pdf/exporters/paddleocr.py,sha256=RBP03GCk0mLeC7tWtuti8AIUHlpOrtvbWkE2n7Ja7k8,19484
50
50
  natural_pdf/exporters/searchable_pdf.py,sha256=G2Tc4tpDXSYIufXJlkA8ppW_3DuzHAaweYKae33pI_c,16290
51
51
  natural_pdf/exporters/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
52
  natural_pdf/exporters/data/pdf.ttf,sha256=x4RUIJJaI9iO2DCmOVe4r4Wmao2vjZ_JDoQ2c7LvGlk,572
53
53
  natural_pdf/exporters/data/sRGB.icc,sha256=KpLUuuRQt22LCqQhk9-XTXX2Jzjs6_dPAcXnWxKpV5Y,6922
54
- natural_pdf/extraction/manager.py,sha256=mUBbfgLG5Pl31wmajXwyipdEJb_dZ5I-y8GnWw7IzGo,4969
55
- natural_pdf/extraction/mixin.py,sha256=eKbr70VibpbtfjvCE80lTFuYHzq_BoVtOHjznL_GMRA,11719
56
- natural_pdf/extraction/result.py,sha256=c1vLguCR6l95cvg-BJJmZvL_MPg2McJaczge55bKZMg,934
54
+ natural_pdf/extraction/manager.py,sha256=sASPJZ5cWFsl8A4PyTjg2yqkyC00tRl6glfoFA6HcsM,4979
55
+ natural_pdf/extraction/mixin.py,sha256=_5wGnzOCEuRWhqdSUV1Lqo9HIi56YC4MWzbBxOkOEKU,23160
56
+ natural_pdf/extraction/result.py,sha256=D5DhjxLW7IvhEkvsAP7Zs2YA8K4hyuoTg681CSn5qA0,1825
57
57
  natural_pdf/flows/__init__.py,sha256=cUN4A8hTDLZSRr4PO2W_lR4z6hWpbNG8Seox-IIcrLU,277
58
58
  natural_pdf/flows/collections.py,sha256=qGuSPFSPQF-wiYquG6STiSzg_o951MSsFEq_B44Jef8,28441
59
59
  natural_pdf/flows/element.py,sha256=mKzk3B7A7sWNvu4CDvAjLr3_ZFLt--ktrSNoLfLpFxU,23940
60
60
  natural_pdf/flows/flow.py,sha256=I61BpFVDQyo6ORsmoqoYiOEP1DBRp0vgDJjm_V8frhc,10562
61
- natural_pdf/flows/region.py,sha256=OJNt1nVt_w89kCw4sQmZRZE5SHgiFWYb8ebcX49jq2A,22192
61
+ natural_pdf/flows/region.py,sha256=hucKKmjjmLt__x-RiX6S1Amsp88yweyjcgWJ7PQtTgY,22187
62
62
  natural_pdf/ocr/__init__.py,sha256=VY8hhvDPf7Gh2lB-d2QRmghLLyTy6ydxlgo1cS4dOSk,2482
63
63
  natural_pdf/ocr/engine.py,sha256=ZBC1tZNM5EDbGDJJmZI9mNHr4nCMLEZvUFhiJq8GdF4,8741
64
64
  natural_pdf/ocr/engine_doctr.py,sha256=ptKrupMWoulZb-R93zr9btoe94JPWU7vlJuN7OBJEIM,17740
65
65
  natural_pdf/ocr/engine_easyocr.py,sha256=bWz6kHUgAJfe3rqdnZBAF-IPvw3B35DlvX5KDdFUtzo,9888
66
66
  natural_pdf/ocr/engine_paddle.py,sha256=0vobobjnsM1G3zihYL7f1roLlKKZWRwioxkGkgIxEUA,16159
67
- natural_pdf/ocr/engine_surya.py,sha256=PNjvpsHnBghAoa-df52HEyvXzfNI-gTFgKvs2LxHgKo,5051
67
+ natural_pdf/ocr/engine_surya.py,sha256=lOvSbZk53VKFVxRmqcQzM_0dHVdwTkRGiDZ9AWCgL1Q,5951
68
68
  natural_pdf/ocr/ocr_factory.py,sha256=GkODuBmqNVECg4u1-KW6ZMfBgVndLkK1W5GM15faf8M,5318
69
69
  natural_pdf/ocr/ocr_manager.py,sha256=K2gpFo3e6RB1ouXOstlEAAYd14DbjBNt5RH6J7ZdDQY,14263
70
70
  natural_pdf/ocr/ocr_options.py,sha256=l33QKu_93r-uwi3t_v8UH8pEgHo6HTVzP4tfmQFRF1w,5488
71
71
  natural_pdf/ocr/utils.py,sha256=OxuHwDbHWj6setvnC0QYwMHrAjxGkhmLzWHpMqqGupA,4397
72
- natural_pdf/qa/__init__.py,sha256=Pjo62JTnUNEjGNsC437mvsS5KQ5m7X_BibGvavR9AW0,108
73
- natural_pdf/qa/document_qa.py,sha256=Jw4yyq3Vifn57D0ANmOfUlZeG8CJjBkItZBV-8ZAmos,15111
72
+ natural_pdf/qa/__init__.py,sha256=2u2KJcA71g1I0HnLD-j6yvDw1moAjo9kkLhhfoYRURM,166
73
+ natural_pdf/qa/document_qa.py,sha256=bwOrO_bq_9wEaLu7j7h8EkN3ya5xMxDoE7oNurEb6-E,14889
74
+ natural_pdf/qa/qa_result.py,sha256=_q4dlSqsjtgomcI8-pqbOT69lqQKnEMkhZNydoxEkkE,2227
74
75
  natural_pdf/search/__init__.py,sha256=0Xa7tT_2q57wHObFMQLQLd4gd9AV0oyS-svV6BmmdMI,4276
75
76
  natural_pdf/search/lancedb_search_service.py,sha256=6dz2IEZUWk3hFW28C-LF_85pWohd7Sr5k44bM0pBdm4,14472
76
77
  natural_pdf/search/numpy_search_service.py,sha256=MoPBlyHTDqah1IrwBzyglEyiXlF4wqaU_5mml_ngvGc,10328
@@ -78,7 +79,7 @@ natural_pdf/search/search_options.py,sha256=sq_e8_jSROicD94b_xtDtLnjEr_Zsy4icjzP
78
79
  natural_pdf/search/search_service_protocol.py,sha256=Dl-Q-CrutkhZwI69scbW9EWPeYM63qxB60_EA7YqIYo,6699
79
80
  natural_pdf/search/searchable_mixin.py,sha256=hqQ_AuID5eTGRCtKYdFLZ1zF35y73uk3x1M1VW9Il8U,23514
80
81
  natural_pdf/selectors/__init__.py,sha256=oZGeqSv53EqmIZOhcnawuaGGlRg1h79vArXuZCWKm4A,123
81
- natural_pdf/selectors/parser.py,sha256=0EJskGjRfwXiqjedY6siIso4TA4dACHb-_DOyogW9TY,31970
82
+ natural_pdf/selectors/parser.py,sha256=nJJPACzFKBMomAZMXzI_L3EMz9ji1agkmxJ5eaij310,32880
82
83
  natural_pdf/templates/__init__.py,sha256=jYBxzfi73vew0f6yhIh1MlRxw4F_TVN2hKQR0YXOFe0,20
83
84
  natural_pdf/utils/__init__.py,sha256=s3M8FggaK1P3EBYn6R_-HgSDjNc9C73gyKe1hihtNWg,43
84
85
  natural_pdf/utils/debug.py,sha256=RN7H3E6ph-GtxubCW6psW7TO8o2BxcNLiEzByTVR9fk,995
@@ -91,9 +92,9 @@ natural_pdf/utils/text_extraction.py,sha256=z6Jhy11pakYCsEpkvh8ldw6DkUFsYF1hCL9Y
91
92
  natural_pdf/utils/visualization.py,sha256=30pRWQdsRJh2pSObh-brKVsFgC1n8tHmSrta_UDnVPw,8989
92
93
  natural_pdf/widgets/__init__.py,sha256=QTVaUmsw__FCweFYZebwPssQxxUFUMd0wpm_cUbGZJY,181
93
94
  natural_pdf/widgets/viewer.py,sha256=2VUY1TzWMDe9I-IVNOosKZ2LaqpjLB62ftMAdk-s6_8,24952
94
- natural_pdf-0.1.21.dist-info/licenses/LICENSE,sha256=9zfwINwJlarbDmdh6iJV4QUG54QSJlSAUcnC1YiC_Ns,1074
95
- natural_pdf-0.1.21.dist-info/METADATA,sha256=zo7RfNG44xTbSSdOgGjciqEVMOMCxRX3BY7qtH3roW8,6261
96
- natural_pdf-0.1.21.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
97
- natural_pdf-0.1.21.dist-info/entry_points.txt,sha256=1R_KMv7g60UBBpRqGfw7bppsMNGdayR-iJlb9ohEk_8,81
98
- natural_pdf-0.1.21.dist-info/top_level.txt,sha256=Cyw1zmNDlUZfb5moU-WUWGprrwH7ln_8LDGdmMHF1xI,17
99
- natural_pdf-0.1.21.dist-info/RECORD,,
95
+ natural_pdf-0.1.23.dist-info/licenses/LICENSE,sha256=9zfwINwJlarbDmdh6iJV4QUG54QSJlSAUcnC1YiC_Ns,1074
96
+ natural_pdf-0.1.23.dist-info/METADATA,sha256=z7Mq5yr_sckn7pFR1KqBz_fG2sG-jBBSb2czsRrzC_k,6660
97
+ natural_pdf-0.1.23.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
98
+ natural_pdf-0.1.23.dist-info/entry_points.txt,sha256=1R_KMv7g60UBBpRqGfw7bppsMNGdayR-iJlb9ohEk_8,81
99
+ natural_pdf-0.1.23.dist-info/top_level.txt,sha256=Cyw1zmNDlUZfb5moU-WUWGprrwH7ln_8LDGdmMHF1xI,17
100
+ natural_pdf-0.1.23.dist-info/RECORD,,