natural-pdf 0.1.13__py3-none-any.whl → 0.1.14__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.
- natural_pdf/analyzers/shape_detection_mixin.py +554 -273
- natural_pdf/core/page.py +1 -1
- natural_pdf/elements/base.py +20 -20
- natural_pdf/elements/region.py +27 -26
- natural_pdf/flows/element.py +2 -2
- {natural_pdf-0.1.13.dist-info → natural_pdf-0.1.14.dist-info}/METADATA +1 -1
- {natural_pdf-0.1.13.dist-info → natural_pdf-0.1.14.dist-info}/RECORD +10 -10
- {natural_pdf-0.1.13.dist-info → natural_pdf-0.1.14.dist-info}/WHEEL +0 -0
- {natural_pdf-0.1.13.dist-info → natural_pdf-0.1.14.dist-info}/licenses/LICENSE +0 -0
- {natural_pdf-0.1.13.dist-info → natural_pdf-0.1.14.dist-info}/top_level.txt +0 -0
natural_pdf/core/page.py
CHANGED
@@ -2198,7 +2198,7 @@ class Page(ClassificationMixin, ExtractionMixin, ShapeDetectionMixin):
|
|
2198
2198
|
def viewer(
|
2199
2199
|
self,
|
2200
2200
|
# elements_to_render: Optional[List['Element']] = None, # No longer needed, from_page handles it
|
2201
|
-
#
|
2201
|
+
# include_source_types: List[str] = ['word', 'line', 'rect', 'region'] # No longer needed
|
2202
2202
|
) -> Optional["SimpleInteractiveViewerWidget"]: # Return type hint updated
|
2203
2203
|
"""
|
2204
2204
|
Creates and returns an interactive ipywidget for exploring elements on this page.
|
natural_pdf/elements/base.py
CHANGED
@@ -59,7 +59,7 @@ class DirectionalMixin:
|
|
59
59
|
direction: str,
|
60
60
|
size: Optional[float] = None,
|
61
61
|
cross_size: str = "full",
|
62
|
-
|
62
|
+
include_source: bool = False,
|
63
63
|
until: Optional[str] = None,
|
64
64
|
include_endpoint: bool = True,
|
65
65
|
**kwargs,
|
@@ -71,7 +71,7 @@ class DirectionalMixin:
|
|
71
71
|
direction: 'left', 'right', 'above', or 'below'
|
72
72
|
size: Size in the primary direction (width for horizontal, height for vertical)
|
73
73
|
cross_size: Size in the cross direction ('full' or 'element')
|
74
|
-
|
74
|
+
include_source: Whether to include this element/region's area in the result
|
75
75
|
until: Optional selector string to specify a boundary element
|
76
76
|
include_endpoint: Whether to include the boundary element found by 'until'
|
77
77
|
**kwargs: Additional parameters for the 'until' selector search
|
@@ -85,7 +85,7 @@ class DirectionalMixin:
|
|
85
85
|
is_positive = direction in ("right", "below") # right/below are positive directions
|
86
86
|
pixel_offset = 1 # Offset for excluding elements/endpoints
|
87
87
|
|
88
|
-
# 1. Determine initial boundaries based on direction and
|
88
|
+
# 1. Determine initial boundaries based on direction and include_source
|
89
89
|
if is_horizontal:
|
90
90
|
# Initial cross-boundaries (vertical)
|
91
91
|
y0 = 0 if cross_size == "full" else self.top
|
@@ -93,11 +93,11 @@ class DirectionalMixin:
|
|
93
93
|
|
94
94
|
# Initial primary boundaries (horizontal)
|
95
95
|
if is_positive: # right
|
96
|
-
x0_initial = self.x0 if
|
96
|
+
x0_initial = self.x0 if include_source else self.x1 + pixel_offset
|
97
97
|
x1_initial = self.x1 # This edge moves
|
98
98
|
else: # left
|
99
99
|
x0_initial = self.x0 # This edge moves
|
100
|
-
x1_initial = self.x1 if
|
100
|
+
x1_initial = self.x1 if include_source else self.x0 - pixel_offset
|
101
101
|
else: # Vertical
|
102
102
|
# Initial cross-boundaries (horizontal)
|
103
103
|
x0 = 0 if cross_size == "full" else self.x0
|
@@ -105,11 +105,11 @@ class DirectionalMixin:
|
|
105
105
|
|
106
106
|
# Initial primary boundaries (vertical)
|
107
107
|
if is_positive: # below
|
108
|
-
y0_initial = self.top if
|
108
|
+
y0_initial = self.top if include_source else self.bottom + pixel_offset
|
109
109
|
y1_initial = self.bottom # This edge moves
|
110
110
|
else: # above
|
111
111
|
y0_initial = self.top # This edge moves
|
112
|
-
y1_initial = self.bottom if
|
112
|
+
y1_initial = self.bottom if include_source else self.top - pixel_offset
|
113
113
|
|
114
114
|
# 2. Calculate the final primary boundary, considering 'size' or page limits
|
115
115
|
if is_horizontal:
|
@@ -195,7 +195,7 @@ class DirectionalMixin:
|
|
195
195
|
|
196
196
|
result = Region(self.page, final_bbox)
|
197
197
|
result.source_element = self
|
198
|
-
result.includes_source =
|
198
|
+
result.includes_source = include_source
|
199
199
|
# Optionally store the boundary element if found
|
200
200
|
if target:
|
201
201
|
result.boundary_element = target
|
@@ -206,7 +206,7 @@ class DirectionalMixin:
|
|
206
206
|
self,
|
207
207
|
height: Optional[float] = None,
|
208
208
|
width: str = "full",
|
209
|
-
|
209
|
+
include_source: bool = False,
|
210
210
|
until: Optional[str] = None,
|
211
211
|
include_endpoint: bool = True,
|
212
212
|
**kwargs,
|
@@ -217,7 +217,7 @@ class DirectionalMixin:
|
|
217
217
|
Args:
|
218
218
|
height: Height of the region above, in points
|
219
219
|
width: Width mode - "full" for full page width or "element" for element width
|
220
|
-
|
220
|
+
include_source: Whether to include this element/region in the result (default: False)
|
221
221
|
until: Optional selector string to specify an upper boundary element
|
222
222
|
include_endpoint: Whether to include the boundary element in the region (default: True)
|
223
223
|
**kwargs: Additional parameters
|
@@ -229,7 +229,7 @@ class DirectionalMixin:
|
|
229
229
|
direction="above",
|
230
230
|
size=height,
|
231
231
|
cross_size=width,
|
232
|
-
|
232
|
+
include_source=include_source,
|
233
233
|
until=until,
|
234
234
|
include_endpoint=include_endpoint,
|
235
235
|
**kwargs,
|
@@ -239,7 +239,7 @@ class DirectionalMixin:
|
|
239
239
|
self,
|
240
240
|
height: Optional[float] = None,
|
241
241
|
width: str = "full",
|
242
|
-
|
242
|
+
include_source: bool = False,
|
243
243
|
until: Optional[str] = None,
|
244
244
|
include_endpoint: bool = True,
|
245
245
|
**kwargs,
|
@@ -250,7 +250,7 @@ class DirectionalMixin:
|
|
250
250
|
Args:
|
251
251
|
height: Height of the region below, in points
|
252
252
|
width: Width mode - "full" for full page width or "element" for element width
|
253
|
-
|
253
|
+
include_source: Whether to include this element/region in the result (default: False)
|
254
254
|
until: Optional selector string to specify a lower boundary element
|
255
255
|
include_endpoint: Whether to include the boundary element in the region (default: True)
|
256
256
|
**kwargs: Additional parameters
|
@@ -262,7 +262,7 @@ class DirectionalMixin:
|
|
262
262
|
direction="below",
|
263
263
|
size=height,
|
264
264
|
cross_size=width,
|
265
|
-
|
265
|
+
include_source=include_source,
|
266
266
|
until=until,
|
267
267
|
include_endpoint=include_endpoint,
|
268
268
|
**kwargs,
|
@@ -272,7 +272,7 @@ class DirectionalMixin:
|
|
272
272
|
self,
|
273
273
|
width: Optional[float] = None,
|
274
274
|
height: str = "full",
|
275
|
-
|
275
|
+
include_source: bool = False,
|
276
276
|
until: Optional[str] = None,
|
277
277
|
include_endpoint: bool = True,
|
278
278
|
**kwargs,
|
@@ -283,7 +283,7 @@ class DirectionalMixin:
|
|
283
283
|
Args:
|
284
284
|
width: Width of the region to the left, in points
|
285
285
|
height: Height mode - "full" for full page height or "element" for element height
|
286
|
-
|
286
|
+
include_source: Whether to include this element/region in the result (default: False)
|
287
287
|
until: Optional selector string to specify a left boundary element
|
288
288
|
include_endpoint: Whether to include the boundary element in the region (default: True)
|
289
289
|
**kwargs: Additional parameters
|
@@ -295,7 +295,7 @@ class DirectionalMixin:
|
|
295
295
|
direction="left",
|
296
296
|
size=width,
|
297
297
|
cross_size=height,
|
298
|
-
|
298
|
+
include_source=include_source,
|
299
299
|
until=until,
|
300
300
|
include_endpoint=include_endpoint,
|
301
301
|
**kwargs,
|
@@ -305,7 +305,7 @@ class DirectionalMixin:
|
|
305
305
|
self,
|
306
306
|
width: Optional[float] = None,
|
307
307
|
height: str = "full",
|
308
|
-
|
308
|
+
include_source: bool = False,
|
309
309
|
until: Optional[str] = None,
|
310
310
|
include_endpoint: bool = True,
|
311
311
|
**kwargs,
|
@@ -316,7 +316,7 @@ class DirectionalMixin:
|
|
316
316
|
Args:
|
317
317
|
width: Width of the region to the right, in points
|
318
318
|
height: Height mode - "full" for full page height or "element" for element height
|
319
|
-
|
319
|
+
include_source: Whether to include this element/region in the result (default: False)
|
320
320
|
until: Optional selector string to specify a right boundary element
|
321
321
|
include_endpoint: Whether to include the boundary element in the region (default: True)
|
322
322
|
**kwargs: Additional parameters
|
@@ -328,7 +328,7 @@ class DirectionalMixin:
|
|
328
328
|
direction="right",
|
329
329
|
size=width,
|
330
330
|
cross_size=height,
|
331
|
-
|
331
|
+
include_source=include_source,
|
332
332
|
until=until,
|
333
333
|
include_endpoint=include_endpoint,
|
334
334
|
**kwargs,
|
natural_pdf/elements/region.py
CHANGED
@@ -106,7 +106,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
106
106
|
direction: str,
|
107
107
|
size: Optional[float] = None,
|
108
108
|
cross_size: str = "full",
|
109
|
-
|
109
|
+
include_source: bool = False,
|
110
110
|
until: Optional[str] = None,
|
111
111
|
include_endpoint: bool = True,
|
112
112
|
**kwargs,
|
@@ -118,7 +118,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
118
118
|
direction: 'left', 'right', 'above', or 'below'
|
119
119
|
size: Size in the primary direction (width for horizontal, height for vertical)
|
120
120
|
cross_size: Size in the cross direction ('full' or 'element')
|
121
|
-
|
121
|
+
include_source: Whether to include this region's area in the result
|
122
122
|
until: Optional selector string to specify a boundary element
|
123
123
|
include_endpoint: Whether to include the boundary element found by 'until'
|
124
124
|
**kwargs: Additional parameters for the 'until' selector search
|
@@ -132,7 +132,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
132
132
|
is_positive = direction in ("right", "below") # right/below are positive directions
|
133
133
|
pixel_offset = 1 # Offset for excluding elements/endpoints
|
134
134
|
|
135
|
-
# 1. Determine initial boundaries based on direction and
|
135
|
+
# 1. Determine initial boundaries based on direction and include_source
|
136
136
|
if is_horizontal:
|
137
137
|
# Initial cross-boundaries (vertical)
|
138
138
|
y0 = 0 if cross_size == "full" else self.top
|
@@ -140,11 +140,11 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
140
140
|
|
141
141
|
# Initial primary boundaries (horizontal)
|
142
142
|
if is_positive: # right
|
143
|
-
x0_initial = self.x0 if
|
143
|
+
x0_initial = self.x0 if include_source else self.x1 + pixel_offset
|
144
144
|
x1_initial = self.x1 # This edge moves
|
145
145
|
else: # left
|
146
146
|
x0_initial = self.x0 # This edge moves
|
147
|
-
x1_initial = self.x1 if
|
147
|
+
x1_initial = self.x1 if include_source else self.x0 - pixel_offset
|
148
148
|
else: # Vertical
|
149
149
|
# Initial cross-boundaries (horizontal)
|
150
150
|
x0 = 0 if cross_size == "full" else self.x0
|
@@ -152,11 +152,11 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
152
152
|
|
153
153
|
# Initial primary boundaries (vertical)
|
154
154
|
if is_positive: # below
|
155
|
-
y0_initial = self.top if
|
155
|
+
y0_initial = self.top if include_source else self.bottom + pixel_offset
|
156
156
|
y1_initial = self.bottom # This edge moves
|
157
157
|
else: # above
|
158
158
|
y0_initial = self.top # This edge moves
|
159
|
-
y1_initial = self.bottom if
|
159
|
+
y1_initial = self.bottom if include_source else self.top - pixel_offset
|
160
160
|
|
161
161
|
# 2. Calculate the final primary boundary, considering 'size' or page limits
|
162
162
|
if is_horizontal:
|
@@ -248,7 +248,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
248
248
|
# 5. Create and return Region
|
249
249
|
region = Region(self.page, final_bbox)
|
250
250
|
region.source_element = self
|
251
|
-
region.includes_source =
|
251
|
+
region.includes_source = include_source
|
252
252
|
# Optionally store the boundary element if found
|
253
253
|
if target:
|
254
254
|
region.boundary_element = target
|
@@ -259,7 +259,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
259
259
|
self,
|
260
260
|
height: Optional[float] = None,
|
261
261
|
width: str = "full",
|
262
|
-
|
262
|
+
include_source: bool = False,
|
263
263
|
until: Optional[str] = None,
|
264
264
|
include_endpoint: bool = True,
|
265
265
|
**kwargs,
|
@@ -270,7 +270,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
270
270
|
Args:
|
271
271
|
height: Height of the region above, in points
|
272
272
|
width: Width mode - "full" for full page width or "element" for element width
|
273
|
-
|
273
|
+
include_source: Whether to include this region in the result (default: False)
|
274
274
|
until: Optional selector string to specify an upper boundary element
|
275
275
|
include_endpoint: Whether to include the boundary element in the region (default: True)
|
276
276
|
**kwargs: Additional parameters
|
@@ -282,7 +282,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
282
282
|
direction="above",
|
283
283
|
size=height,
|
284
284
|
cross_size=width,
|
285
|
-
|
285
|
+
include_source=include_source,
|
286
286
|
until=until,
|
287
287
|
include_endpoint=include_endpoint,
|
288
288
|
**kwargs,
|
@@ -292,7 +292,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
292
292
|
self,
|
293
293
|
height: Optional[float] = None,
|
294
294
|
width: str = "full",
|
295
|
-
|
295
|
+
include_source: bool = False,
|
296
296
|
until: Optional[str] = None,
|
297
297
|
include_endpoint: bool = True,
|
298
298
|
**kwargs,
|
@@ -303,7 +303,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
303
303
|
Args:
|
304
304
|
height: Height of the region below, in points
|
305
305
|
width: Width mode - "full" for full page width or "element" for element width
|
306
|
-
|
306
|
+
include_source: Whether to include this region in the result (default: False)
|
307
307
|
until: Optional selector string to specify a lower boundary element
|
308
308
|
include_endpoint: Whether to include the boundary element in the region (default: True)
|
309
309
|
**kwargs: Additional parameters
|
@@ -315,7 +315,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
315
315
|
direction="below",
|
316
316
|
size=height,
|
317
317
|
cross_size=width,
|
318
|
-
|
318
|
+
include_source=include_source,
|
319
319
|
until=until,
|
320
320
|
include_endpoint=include_endpoint,
|
321
321
|
**kwargs,
|
@@ -325,7 +325,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
325
325
|
self,
|
326
326
|
width: Optional[float] = None,
|
327
327
|
height: str = "full",
|
328
|
-
|
328
|
+
include_source: bool = False,
|
329
329
|
until: Optional[str] = None,
|
330
330
|
include_endpoint: bool = True,
|
331
331
|
**kwargs,
|
@@ -336,7 +336,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
336
336
|
Args:
|
337
337
|
width: Width of the region to the left, in points
|
338
338
|
height: Height mode - "full" for full page height or "element" for element height
|
339
|
-
|
339
|
+
include_source: Whether to include this region in the result (default: False)
|
340
340
|
until: Optional selector string to specify a left boundary element
|
341
341
|
include_endpoint: Whether to include the boundary element in the region (default: True)
|
342
342
|
**kwargs: Additional parameters
|
@@ -348,7 +348,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
348
348
|
direction="left",
|
349
349
|
size=width,
|
350
350
|
cross_size=height,
|
351
|
-
|
351
|
+
include_source=include_source,
|
352
352
|
until=until,
|
353
353
|
include_endpoint=include_endpoint,
|
354
354
|
**kwargs,
|
@@ -358,7 +358,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
358
358
|
self,
|
359
359
|
width: Optional[float] = None,
|
360
360
|
height: str = "full",
|
361
|
-
|
361
|
+
include_source: bool = False,
|
362
362
|
until: Optional[str] = None,
|
363
363
|
include_endpoint: bool = True,
|
364
364
|
**kwargs,
|
@@ -369,7 +369,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
369
369
|
Args:
|
370
370
|
width: Width of the region to the right, in points
|
371
371
|
height: Height mode - "full" for full page height or "element" for element height
|
372
|
-
|
372
|
+
include_source: Whether to include this region in the result (default: False)
|
373
373
|
until: Optional selector string to specify a right boundary element
|
374
374
|
include_endpoint: Whether to include the boundary element in the region (default: True)
|
375
375
|
**kwargs: Additional parameters
|
@@ -381,7 +381,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
381
381
|
direction="right",
|
382
382
|
size=width,
|
383
383
|
cross_size=height,
|
384
|
-
|
384
|
+
include_source=include_source,
|
385
385
|
until=until,
|
386
386
|
include_endpoint=include_endpoint,
|
387
387
|
**kwargs,
|
@@ -1274,7 +1274,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
1274
1274
|
if hasattr(self, "model") and self.model == "tatr" and self.region_type == "table":
|
1275
1275
|
effective_method = "tatr"
|
1276
1276
|
else:
|
1277
|
-
effective_method = "
|
1277
|
+
effective_method = "plumber"
|
1278
1278
|
|
1279
1279
|
logger.debug(f"Region {self.bbox}: Extracting table using method '{effective_method}'")
|
1280
1280
|
|
@@ -1297,6 +1297,7 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
1297
1297
|
def _extract_table_plumber(self, table_settings: dict) -> List[List[str]]:
|
1298
1298
|
"""
|
1299
1299
|
Extract table using pdfplumber's table extraction.
|
1300
|
+
This method extracts the largest table within the region.
|
1300
1301
|
|
1301
1302
|
Args:
|
1302
1303
|
table_settings: Settings for pdfplumber table extraction
|
@@ -1307,12 +1308,12 @@ class Region(DirectionalMixin, ClassificationMixin, ExtractionMixin, ShapeDetect
|
|
1307
1308
|
# Create a crop of the page for this region
|
1308
1309
|
cropped = self.page._page.crop(self.bbox)
|
1309
1310
|
|
1310
|
-
# Extract table from the cropped area
|
1311
|
-
|
1311
|
+
# Extract the single largest table from the cropped area
|
1312
|
+
table = cropped.extract_table(table_settings)
|
1312
1313
|
|
1313
|
-
# Return the
|
1314
|
-
if
|
1315
|
-
return
|
1314
|
+
# Return the table or an empty list if none found
|
1315
|
+
if table:
|
1316
|
+
return table
|
1316
1317
|
return []
|
1317
1318
|
|
1318
1319
|
def _extract_table_tatr(self, use_ocr=False, ocr_config=None) -> List[List[str]]:
|
natural_pdf/flows/element.py
CHANGED
@@ -175,7 +175,7 @@ class FlowElement:
|
|
175
175
|
if current_segment_idx == start_segment_index:
|
176
176
|
op_source = self.physical_object
|
177
177
|
op_direction_params["size"] = remaining_size if size is not None else None
|
178
|
-
op_direction_params["
|
178
|
+
op_direction_params["include_source"] = False
|
179
179
|
|
180
180
|
source_for_op_call = op_source
|
181
181
|
if not isinstance(source_for_op_call, PhysicalRegion_Class):
|
@@ -191,7 +191,7 @@ class FlowElement:
|
|
191
191
|
"size": remaining_size if size is not None else None,
|
192
192
|
"cross_size": cross_size_for_op,
|
193
193
|
"cross_alignment": cross_alignment, # Pass alignment
|
194
|
-
"
|
194
|
+
"include_source": False,
|
195
195
|
# Pass other relevant kwargs if Region._direction uses them (e.g. strict_type)
|
196
196
|
**{k: v for k, v in kwargs.items() if k in ['strict_type', 'first_match_only']}
|
197
197
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
natural_pdf/__init__.py,sha256=0sCYgb9BAV5OnpD_1AswMuOLuXNmpe3OLJpv_6p3tgw,2449
|
2
2
|
natural_pdf/analyzers/__init__.py,sha256=dIXjsMqoxKmd9OOnSBzn12wvdIz7D7YNQRAnXslpJSM,142
|
3
|
-
natural_pdf/analyzers/shape_detection_mixin.py,sha256=
|
3
|
+
natural_pdf/analyzers/shape_detection_mixin.py,sha256=6IXKuifC2QDurW8_gMakZCetTHSdOUK5Ye_B-P4EQMA,75381
|
4
4
|
natural_pdf/analyzers/text_options.py,sha256=qEkDaYWla0rIM_gszEOsu52q7C_dAfV81P2HLJZM2sw,3333
|
5
5
|
natural_pdf/analyzers/text_structure.py,sha256=VfKTsTFrK877sC0grsis9jK3rrgp0Mbp13VWEbukTcs,28437
|
6
6
|
natural_pdf/analyzers/utils.py,sha256=PYbzJzSAHZ7JsMes84WIrSbA0zkjJGs0CLvIeINsf_k,2100
|
@@ -24,14 +24,14 @@ natural_pdf/collections/pdf_collection.py,sha256=nsbrzcsXAD2qVLLXhDYpljAb_WnjMNa
|
|
24
24
|
natural_pdf/core/__init__.py,sha256=QC8H4M3KbXwMFiQORZ0pdPlzx1Ix6oKKQSS7Ib2KEaA,38
|
25
25
|
natural_pdf/core/element_manager.py,sha256=_UdXu51sLi6STzc8Pj4k8R721G3yJixXDLuRHn3hmr8,25731
|
26
26
|
natural_pdf/core/highlighting_service.py,sha256=tjMJpdJj2oaMGpdqiNHPcTJqID4nd-uBZ5v7KtPmoc0,36762
|
27
|
-
natural_pdf/core/page.py,sha256=
|
27
|
+
natural_pdf/core/page.py,sha256=hg7EoYMbvgo9dXivBl6xb6dENobhSHt0Wuu36O5J900,111119
|
28
28
|
natural_pdf/core/pdf.py,sha256=395aBTg4Le4vABvQWgBhPm669nGJ8JdMToTs1UtQ2Vg,69575
|
29
29
|
natural_pdf/elements/__init__.py,sha256=S8XeiNWJ1WcgnyYKdYV1yxQlAxCCO3FfITT8MQwNbyk,41
|
30
|
-
natural_pdf/elements/base.py,sha256=
|
30
|
+
natural_pdf/elements/base.py,sha256=NNF-iUzkip0UgfKTuqLE1jVJsq2yD7LUTvOQWMi_Jpc,39631
|
31
31
|
natural_pdf/elements/collections.py,sha256=qd58tD3f-eojz90ICytlqu4Ej0OQoWgsxV4umQDhUvA,120809
|
32
32
|
natural_pdf/elements/line.py,sha256=300kSFBDUBIudfeQtH_tzW9gTYRgRKUDPiTABw6J-BE,4782
|
33
33
|
natural_pdf/elements/rect.py,sha256=kiVa3e377ZnqIOXc89d9ZSY4EcmDxtccdtUw-HOQzpw,3796
|
34
|
-
natural_pdf/elements/region.py,sha256=
|
34
|
+
natural_pdf/elements/region.py,sha256=wBBAcuudRqL1b9ojLdrXiwUIcQbTWEWTky_RbBuCgnU,115798
|
35
35
|
natural_pdf/elements/text.py,sha256=13HvVZGinj2Vm_fFCAnqi7hohtoKvnpCp3VCfkpeAbc,11146
|
36
36
|
natural_pdf/export/mixin.py,sha256=L1q3MIEFWuvie4j4_EmW7GT3NerbZ1as0XMUoqTS7gM,5083
|
37
37
|
natural_pdf/exporters/__init__.py,sha256=7MnvRLLQdwtg-ULu-8uK8C84GsKiJamyhRw_GgWhw7k,151
|
@@ -49,7 +49,7 @@ natural_pdf/extraction/mixin.py,sha256=eKbr70VibpbtfjvCE80lTFuYHzq_BoVtOHjznL_GM
|
|
49
49
|
natural_pdf/extraction/result.py,sha256=c1vLguCR6l95cvg-BJJmZvL_MPg2McJaczge55bKZMg,934
|
50
50
|
natural_pdf/flows/__init__.py,sha256=82ibI0eNJfVergEsTyom9Nxe_T6pnWQsr4-CISGQlz0,277
|
51
51
|
natural_pdf/flows/collections.py,sha256=iOmRqM5K74kqioh7-UAbNgkpXMr9nkZZ5oW4_sQ1Alo,26433
|
52
|
-
natural_pdf/flows/element.py,sha256=
|
52
|
+
natural_pdf/flows/element.py,sha256=HMlSBjnQH3CF89wDwc0qBpAfmMmHHK_5LeY1TYeqtTs,20564
|
53
53
|
natural_pdf/flows/flow.py,sha256=ft07Ou0uRodF_gTgumVlU9YUquE3LTZz5LEAoQGErEs,10375
|
54
54
|
natural_pdf/flows/region.py,sha256=5xAnePZjs292oKrGG5El3pwhpxaHQYLzse35ilswhqI,21298
|
55
55
|
natural_pdf/ocr/__init__.py,sha256=VY8hhvDPf7Gh2lB-d2QRmghLLyTy6ydxlgo1cS4dOSk,2482
|
@@ -84,8 +84,8 @@ natural_pdf/utils/text_extraction.py,sha256=z6Jhy11pakYCsEpkvh8ldw6DkUFsYF1hCL9Y
|
|
84
84
|
natural_pdf/utils/visualization.py,sha256=30pRWQdsRJh2pSObh-brKVsFgC1n8tHmSrta_UDnVPw,8989
|
85
85
|
natural_pdf/widgets/__init__.py,sha256=O2fSDo604wDAP6UwUkmBq3eT91RSqHwBpAOQXq92S8s,214
|
86
86
|
natural_pdf/widgets/viewer.py,sha256=ekgXTEfA48GrR-JjpCpgyBCXdf4IubV0pAXDJozcU7A,39196
|
87
|
-
natural_pdf-0.1.
|
88
|
-
natural_pdf-0.1.
|
89
|
-
natural_pdf-0.1.
|
90
|
-
natural_pdf-0.1.
|
91
|
-
natural_pdf-0.1.
|
87
|
+
natural_pdf-0.1.14.dist-info/licenses/LICENSE,sha256=9zfwINwJlarbDmdh6iJV4QUG54QSJlSAUcnC1YiC_Ns,1074
|
88
|
+
natural_pdf-0.1.14.dist-info/METADATA,sha256=NzaR_hcSyFH22knKZ-NMCct_XOo2nPUk83XHspTncyE,7674
|
89
|
+
natural_pdf-0.1.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
90
|
+
natural_pdf-0.1.14.dist-info/top_level.txt,sha256=Cyw1zmNDlUZfb5moU-WUWGprrwH7ln_8LDGdmMHF1xI,17
|
91
|
+
natural_pdf-0.1.14.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|