natural-pdf 25.3.16__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.
- examples/__init__.py +3 -0
- examples/another_exclusion_example.py +20 -0
- examples/basic_usage.py +190 -0
- examples/boundary_exclusion_test.py +137 -0
- examples/boundary_inclusion_fix_test.py +157 -0
- examples/chainable_layout_example.py +70 -0
- examples/color_basic_test.py +49 -0
- examples/color_name_example.py +71 -0
- examples/color_test.py +62 -0
- examples/debug_ocr.py +91 -0
- examples/direct_ocr_test.py +148 -0
- examples/direct_paddle_test.py +99 -0
- examples/direct_qa_example.py +165 -0
- examples/document_layout_analysis.py +123 -0
- examples/document_qa_example.py +185 -0
- examples/exclusion_count_debug.py +128 -0
- examples/exclusion_debug.py +107 -0
- examples/exclusion_example.py +150 -0
- examples/exclusion_optimization_example.py +190 -0
- examples/extract_text_test.py +128 -0
- examples/font_aware_example.py +101 -0
- examples/font_variant_example.py +124 -0
- examples/footer_overlap_test.py +124 -0
- examples/highlight_all_example.py +82 -0
- examples/highlight_attributes_test.py +114 -0
- examples/highlight_confidence_display.py +122 -0
- examples/highlight_demo.py +110 -0
- examples/highlight_float_test.py +71 -0
- examples/highlight_test.py +147 -0
- examples/highlighting_example.py +123 -0
- examples/image_width_example.py +84 -0
- examples/improved_api_example.py +128 -0
- examples/layout_confidence_display_test.py +65 -0
- examples/layout_confidence_test.py +82 -0
- examples/layout_coordinate_debug.py +258 -0
- examples/layout_highlight_test.py +77 -0
- examples/logging_example.py +70 -0
- examples/ocr_comprehensive.py +193 -0
- examples/ocr_debug_example.py +87 -0
- examples/ocr_default_test.py +97 -0
- examples/ocr_engine_comparison.py +235 -0
- examples/ocr_example.py +89 -0
- examples/ocr_simplified_params.py +79 -0
- examples/ocr_visualization.py +102 -0
- examples/ocr_visualization_test.py +121 -0
- examples/paddle_layout_example.py +315 -0
- examples/paddle_layout_simple.py +74 -0
- examples/paddleocr_example.py +224 -0
- examples/page_collection_example.py +103 -0
- examples/polygon_highlight_example.py +83 -0
- examples/position_methods_example.py +134 -0
- examples/region_boundary_test.py +73 -0
- examples/region_exclusion_test.py +149 -0
- examples/region_expand_example.py +109 -0
- examples/region_image_example.py +116 -0
- examples/region_ocr_test.py +119 -0
- examples/region_sections_example.py +115 -0
- examples/school_books.py +49 -0
- examples/school_books_all.py +52 -0
- examples/scouring.py +36 -0
- examples/section_extraction_example.py +232 -0
- examples/simple_document_qa.py +97 -0
- examples/spatial_navigation_example.py +108 -0
- examples/table_extraction_example.py +135 -0
- examples/table_structure_detection.py +155 -0
- examples/tatr_cells_test.py +56 -0
- examples/tatr_ocr_table_test.py +94 -0
- examples/text_search_example.py +122 -0
- examples/text_style_example.py +110 -0
- examples/tiny-text.py +61 -0
- examples/until_boundaries_example.py +156 -0
- examples/until_example.py +112 -0
- examples/very_basics.py +15 -0
- natural_pdf/__init__.py +55 -0
- natural_pdf/analyzers/__init__.py +9 -0
- natural_pdf/analyzers/document_layout.py +736 -0
- natural_pdf/analyzers/text_structure.py +153 -0
- natural_pdf/core/__init__.py +3 -0
- natural_pdf/core/page.py +2376 -0
- natural_pdf/core/pdf.py +572 -0
- natural_pdf/elements/__init__.py +3 -0
- natural_pdf/elements/base.py +553 -0
- natural_pdf/elements/collections.py +770 -0
- natural_pdf/elements/line.py +124 -0
- natural_pdf/elements/rect.py +122 -0
- natural_pdf/elements/region.py +1366 -0
- natural_pdf/elements/text.py +304 -0
- natural_pdf/ocr/__init__.py +62 -0
- natural_pdf/ocr/easyocr_engine.py +254 -0
- natural_pdf/ocr/engine.py +158 -0
- natural_pdf/ocr/paddleocr_engine.py +263 -0
- natural_pdf/qa/__init__.py +3 -0
- natural_pdf/qa/document_qa.py +405 -0
- natural_pdf/selectors/__init__.py +4 -0
- natural_pdf/selectors/parser.py +360 -0
- natural_pdf/templates/__init__.py +1 -0
- natural_pdf/templates/ocr_debug.html +517 -0
- natural_pdf/utils/__init__.py +4 -0
- natural_pdf/utils/highlighting.py +605 -0
- natural_pdf/utils/ocr.py +515 -0
- natural_pdf/utils/reading_order.py +227 -0
- natural_pdf/utils/visualization.py +151 -0
- natural_pdf-25.3.16.dist-info/LICENSE +21 -0
- natural_pdf-25.3.16.dist-info/METADATA +268 -0
- natural_pdf-25.3.16.dist-info/RECORD +109 -0
- natural_pdf-25.3.16.dist-info/WHEEL +5 -0
- natural_pdf-25.3.16.dist-info/top_level.txt +3 -0
- tests/__init__.py +3 -0
- tests/test_pdf.py +39 -0
@@ -0,0 +1,109 @@
|
|
1
|
+
examples/__init__.py,sha256=5FXw2QRYdkAMT5b89NmR-vC4UbEUZZHGyDK2KDYt36Y,33
|
2
|
+
examples/another_exclusion_example.py,sha256=cffipsR_MRBxCJaXa1V-DMtPtFdtNziQoSSnNw89JwQ,517
|
3
|
+
examples/basic_usage.py,sha256=LuZLZECcNfRvRoioUxq4SKzqmtfOzqsbecujP3dKfgE,8004
|
4
|
+
examples/boundary_exclusion_test.py,sha256=QD9setjqLInYg-Er0BTpAHBa_B43X57Cl0PX25UfoWU,5033
|
5
|
+
examples/boundary_inclusion_fix_test.py,sha256=Crnlt2CnX64WuEyi-2x5tSINgVJFv-nXY6_p9vdCzsQ,6681
|
6
|
+
examples/chainable_layout_example.py,sha256=hrdzI42bwI9yB7g84M4uIGVyZ4qTj2KODzUtzxet6mY,2683
|
7
|
+
examples/color_basic_test.py,sha256=qkpMushxIAJLUZxULCLRpziIDOoUGZ5Zm6TtPVNnCmo,1620
|
8
|
+
examples/color_name_example.py,sha256=667GFKD42RXbQIJ_Ey50uT_6OxO7BnK1FGVRqtRxeIs,2300
|
9
|
+
examples/color_test.py,sha256=owJ64qH5j5WgVhb7Nl2F-v89ilr1mQNwFm1xphvNnX4,2320
|
10
|
+
examples/debug_ocr.py,sha256=oHTHWyamz2B9Est1uuYaC1W4Acubh7YNQcb_4eTMZPw,2521
|
11
|
+
examples/direct_ocr_test.py,sha256=eO151awEYv24qKToj1704G4gq0SLgnx9bDXJgMHln64,5661
|
12
|
+
examples/direct_paddle_test.py,sha256=awoHkR0WLpDEzcOD_HtxhXoBe9FmVBjzzBwtN4HcbVE,3335
|
13
|
+
examples/direct_qa_example.py,sha256=0XxN1I617Tu9fPWoBFFwtyF9oA2Rlhw8HexHzomwJms,5709
|
14
|
+
examples/document_layout_analysis.py,sha256=zpr2LroZrrTqoGeb0BWhexc3gwfBIPB6FeEL-VhKyqU,4928
|
15
|
+
examples/document_qa_example.py,sha256=IKe7FKnKbdaDPwQ-1uwm3KJenxennzqigQJGiQBIL1g,7240
|
16
|
+
examples/exclusion_count_debug.py,sha256=UKrWiFkV42iuXShMR1AlzZyCVJpl9IoalIRcfazbVm4,4990
|
17
|
+
examples/exclusion_debug.py,sha256=J2ZXpEWLh-XK-7oDldovC0iGFEMtuwENLmAqGMFswZE,3708
|
18
|
+
examples/exclusion_example.py,sha256=JnlC19y3ASPTRjdV2A_5T5W1V4uy_DTAYw6O0TKk1GY,5778
|
19
|
+
examples/exclusion_optimization_example.py,sha256=OVkzSlSo2a5tSaruq51uRcvAyfMq06vCBGzcENGOZGI,7156
|
20
|
+
examples/extract_text_test.py,sha256=hmcmm8gcXbyOPGkhy3h56iFdT3AxuuuKny2wvQZyvHg,4903
|
21
|
+
examples/font_aware_example.py,sha256=62bZXe0uM-rD2WSbvvpEolq563zZPXsFgBzsM_iIx2c,3960
|
22
|
+
examples/font_variant_example.py,sha256=fYNxpx3MYjFvK3U47-oNlp1lOq7g4M6ZXqZwncHM_eA,4656
|
23
|
+
examples/footer_overlap_test.py,sha256=HoLqS-GV707z8D13NfzZvJUODL7ymfLV71iR0H5w1Fw,4654
|
24
|
+
examples/highlight_all_example.py,sha256=eJTQ52R3o6r1gdoAyTU1QOigRciieAZridqqByET2-0,3042
|
25
|
+
examples/highlight_attributes_test.py,sha256=ilqaQdTNwUU8Kzq64GHIEC2xk94AgU29YkLS9LQtgrQ,4426
|
26
|
+
examples/highlight_confidence_display.py,sha256=SG0W2wMTNlIK2HmzlgGU1gfzRY0NOX75rPPsPfa03dM,4481
|
27
|
+
examples/highlight_demo.py,sha256=xLfYKzwtZ-MJ-99AzgJBRihCYQd827QeHapfZXQqBjM,3495
|
28
|
+
examples/highlight_float_test.py,sha256=1VKwSJ_K9sVDjYjNNLBpj-1m860rF2ziNLWOXx_JWYU,2250
|
29
|
+
examples/highlight_test.py,sha256=nlirCchUB6P3jV9shn55kVSABZd5YcVozx1R47c39Gk,5812
|
30
|
+
examples/highlighting_example.py,sha256=8WoXL92nef61e4IDAEqL2EMC_nH06dM09OTXG7EJZO0,4893
|
31
|
+
examples/image_width_example.py,sha256=jq5Xekx9oWHzNFfVOGt_H9nIcdlM1xZGbNjRWzdq9Kc,3414
|
32
|
+
examples/improved_api_example.py,sha256=R_y_mzZYLJR1WnsAblgIBVGNBPKesLBMvnNEwhlhGpQ,4807
|
33
|
+
examples/layout_confidence_display_test.py,sha256=9Ywg5YYUb8yLICtkKWmnRuyHkFsnwC3e4kBfqvq2MSE,2605
|
34
|
+
examples/layout_confidence_test.py,sha256=hDr0Fwrv6p1UZ1vfMRXT3oR_SOgwj5GkLw3pd3D_Qaw,3438
|
35
|
+
examples/layout_coordinate_debug.py,sha256=H8qG7kAsdw1ZkmOTdcH9tU3WGgMdMGpFj8DDnNAXTO8,11405
|
36
|
+
examples/layout_highlight_test.py,sha256=ZOiy4beHuNlkDXVftMDo-xL9jwrzszU610CW6p5lZHI,3057
|
37
|
+
examples/logging_example.py,sha256=9xV0IqmNla67Is3ICN_Hvo-Dr4KtoXG1-QqiT711XKg,2543
|
38
|
+
examples/ocr_comprehensive.py,sha256=f2uC3m1hN11U9gyVJUKvoZ9Ul8ORkVRj0LWVQ0OraSE,6793
|
39
|
+
examples/ocr_debug_example.py,sha256=Ofx2B6HGzE6vSVq-4TOZEH8pzOzLFXxcHlseAMZF-uc,2996
|
40
|
+
examples/ocr_default_test.py,sha256=fn4j92M8ODoYKH7nPYEHSt_iT42e4u-KsGZH8HQlJqw,3404
|
41
|
+
examples/ocr_engine_comparison.py,sha256=3JRUjH5KxjPlZE45Ov20nSGB2Y2AvhwjlqPd9K3pVEk,8698
|
42
|
+
examples/ocr_example.py,sha256=E-b7PKLUmdwqCr4TCfECDvO_-du6Sf4-JFj8YyMCKLE,3375
|
43
|
+
examples/ocr_simplified_params.py,sha256=PnxWKj1LY_HrfZHmG-LzYva6lQPoUvD87Vtklv2LQxQ,2302
|
44
|
+
examples/ocr_visualization.py,sha256=Vs3KxgyFUGNTQzFvGpOFvO-8o9xpx8GzOTFXokvp3xA,3874
|
45
|
+
examples/ocr_visualization_test.py,sha256=Pu-0YY1gkKqt5FCPCn7aFVq_79YzYD6XdJOTyAHaDl4,3836
|
46
|
+
examples/paddle_layout_example.py,sha256=YueAv-jLF2--qAv45Ngkl-MlYlwNep6Ln8S00lebzs0,12861
|
47
|
+
examples/paddle_layout_simple.py,sha256=mffGwKDGL6aMo2plGIdT_j3iEiUiPwp--ZgM54np21I,2117
|
48
|
+
examples/paddleocr_example.py,sha256=Ouz6Sjj75UHqBGYZFEwRfifkgPZpDrViohmKPDf6e-I,7761
|
49
|
+
examples/page_collection_example.py,sha256=Nhx1mTnXxe-ThYu3tjUAoMdnUIaXHJigYf4WKt17HEE,4122
|
50
|
+
examples/polygon_highlight_example.py,sha256=J-vFzkbwTDJjbruI0AFVoSSwAkNQl-8lp-JsvVWJlXo,2966
|
51
|
+
examples/position_methods_example.py,sha256=sP-OkxQfMOnwUXbZ2bsIi4SPWXW8IRID0aqQ_aW4dys,4931
|
52
|
+
examples/region_boundary_test.py,sha256=6T3ECxl_ZjsqO6X7it2Tbo92CqIl6skpmOKOCdl9bbo,2584
|
53
|
+
examples/region_exclusion_test.py,sha256=_TcQWIb4aLYfoUIk5jlsJ32Q7eX-3IAg-DVkwAG1DKk,6650
|
54
|
+
examples/region_expand_example.py,sha256=_iKlMdLUVCUrEywC7N_pNc5rUvuqd5k93Pg1OrNCfvk,4081
|
55
|
+
examples/region_image_example.py,sha256=rsyK_LTrU-g6VF8kNu8SI1B92C4aWB1hfMsN1tg9ZGs,3949
|
56
|
+
examples/region_ocr_test.py,sha256=Ex8rd-jHjkGftHS4zkdj25tcfuGgu5I0Xv85Ky-OA68,4113
|
57
|
+
examples/region_sections_example.py,sha256=4JrL7uiWTds7KnpWItcfgwr_puScBADiPJ_4LLBgZo0,4677
|
58
|
+
examples/school_books.py,sha256=ouYsfp_Dm7f3oxg1VBc4ZpIVL5IyaXqMu8Yzujethao,1621
|
59
|
+
examples/school_books_all.py,sha256=5PLjbeyVvbTTSE_GCneFWI5dGOugs9MSYDKzxHuoGMU,1774
|
60
|
+
examples/scouring.py,sha256=WsBPi3i9DiE22ogWz3Lksex5HXSCvLhSmfa23HdfM5E,926
|
61
|
+
examples/section_extraction_example.py,sha256=fn451PFmAfdOTtSNhvah2OvpCGPF4dAnhOai-_yLLH8,8606
|
62
|
+
examples/simple_document_qa.py,sha256=B1R2_GclS3OOXmcOUCBO2R4BtWrrFj1bQiLJ3nqR4Y8,3744
|
63
|
+
examples/spatial_navigation_example.py,sha256=P5QkGlMOOASR2XY49cL2o5UNhIf7uQ9StG0My3rea2k,3761
|
64
|
+
examples/table_extraction_example.py,sha256=KwWtPwR8Db96sNeNXK1p8RJGtrp8EujEkqVKwzB4gfQ,4919
|
65
|
+
examples/table_structure_detection.py,sha256=il9-Gl0Qs11DKYo6fqo9c7cnd-9bmOsQVjOc5DI1E8g,5792
|
66
|
+
examples/tatr_cells_test.py,sha256=bnXWPk3t2oG_sxluAGEK5mZyEf0SrOHGxZUZp5l-0LE,1773
|
67
|
+
examples/tatr_ocr_table_test.py,sha256=B_GGOJarga0ExTViSygOuqnbjcKbFPyuMsEVnNnAzlE,3178
|
68
|
+
examples/text_search_example.py,sha256=d6y7S1WFSCEGRETVNwVcKmT7sjLh9R2S1H_NjJLNbow,4765
|
69
|
+
examples/text_style_example.py,sha256=pgLb9rbBrERj18icRsrSIgs0ndKuKcBWycwVPAAynrI,4276
|
70
|
+
examples/tiny-text.py,sha256=X_SDThngugL8q-XvcKlRe8iNUqouxT3rYCDFqK2MRyo,1693
|
71
|
+
examples/until_boundaries_example.py,sha256=rN8YrwDM7rBb1PuxYkpszYVWT-tNMSD-aKF-2zLBoHo,6461
|
72
|
+
examples/until_example.py,sha256=4b3GyQxaayGfODiXaCgxcq_92gUgpqaJ0_lMWQnYD_0,4559
|
73
|
+
examples/very_basics.py,sha256=cNLnr1z701ri0LgE1cVM4gfMMND0C9UnvvWybnwum6g,418
|
74
|
+
natural_pdf/__init__.py,sha256=kKHL7SWzk0_ydDDX12X5W3s9-vEKgVYOBubXzp_SCdM,1784
|
75
|
+
natural_pdf/analyzers/__init__.py,sha256=XhxlbwiqbGpeIlS88c4P2t7-MLP98U3CcIr-3nGp488,188
|
76
|
+
natural_pdf/analyzers/document_layout.py,sha256=VHZTiiEZByhYUBHqOqmNIgj59zhc3ZNKU5yVaZOa5Fw,31030
|
77
|
+
natural_pdf/analyzers/text_structure.py,sha256=ZmUsBMNBENjEYcABHqwziDXIHyCVYdUaEyAW0Ohagzc,5208
|
78
|
+
natural_pdf/core/__init__.py,sha256=GUuFtj2Apc9biAdUOlnL8leL3BQncEzubvpiAUaU3ss,37
|
79
|
+
natural_pdf/core/page.py,sha256=1DqF6mvpFKqsmRnFFrByV6C-MqGJ2MWyOQIwWiCs8PA,106040
|
80
|
+
natural_pdf/core/pdf.py,sha256=zeLiOJ8XZ8jPaCR9mhurCiQ6kzesN6lcTXlBjTowi_4,23363
|
81
|
+
natural_pdf/elements/__init__.py,sha256=6FGHZm2oONd8zErahMEawuB4AvJR5jOZPt4KtEwbj80,40
|
82
|
+
natural_pdf/elements/base.py,sha256=QJmhk6sYDKErLGrQ5VYhloytuntufxiP6wTzGfZ__9w,22754
|
83
|
+
natural_pdf/elements/collections.py,sha256=vFFeMS0XiBL3p9PyNmwXndKMlPhlwp8os3xKLveN_8k,31558
|
84
|
+
natural_pdf/elements/line.py,sha256=GrlpcfwcjugUGlneSDLaGa4ojz98A0l16wknlzrBCe0,4056
|
85
|
+
natural_pdf/elements/rect.py,sha256=dls9g-R213O78HvfAJMak3_eV14Zh654Zw7hqTTXxDQ,3949
|
86
|
+
natural_pdf/elements/region.py,sha256=2xXw6DyFp_nCGiQm6nNT7JfFvi82963R8rheZrkWpC8,57986
|
87
|
+
natural_pdf/elements/text.py,sha256=OAuy0ozaemj6yjMwhXPsJ76VZtRPeJbmrFTzpDJA2_U,11017
|
88
|
+
natural_pdf/ocr/__init__.py,sha256=m2_hQRNEQihg9yIx6tMkurKfAnsBU7jbREvZyR_c2fs,2206
|
89
|
+
natural_pdf/ocr/easyocr_engine.py,sha256=wwAgOf6IrCETyTGppjaVN6d46VlYRgK9ehbpwCE0LVA,9392
|
90
|
+
natural_pdf/ocr/engine.py,sha256=NuvZszyHRQoEGwJC7cNdR8UMumgaLADwWiwK0ey9sls,5679
|
91
|
+
natural_pdf/ocr/paddleocr_engine.py,sha256=iPKxfZhOLO146rOekOhRRB8y2BqqVTqrm8pkDgkaJgI,9157
|
92
|
+
natural_pdf/qa/__init__.py,sha256=kagdfqNMpTnyzjC2EFy_PBX5us38NnJL548ESSQVzfI,107
|
93
|
+
natural_pdf/qa/document_qa.py,sha256=kZwI1YWqnbzQafeIFJeNvhvqSIwLuF-85rAmdO0P_sE,16225
|
94
|
+
natural_pdf/selectors/__init__.py,sha256=Jfk-JBZEpQ7V5FWVGuLJQLH-qOfqNLC2AdicncMhrmY,121
|
95
|
+
natural_pdf/selectors/parser.py,sha256=ornrWpc4m9ABxnoMkL3mkZ8BdL0fFRSrcE0wPDPeqC0,14209
|
96
|
+
natural_pdf/templates/__init__.py,sha256=i7N8epDxZoDDsK4p2iUiMwzKVs97i_KtNk8ATArqlC4,19
|
97
|
+
natural_pdf/templates/ocr_debug.html,sha256=Zy9StzBeHFQU8ity6cjFSZLe3TY0QOabUux4c5WQUzs,19171
|
98
|
+
natural_pdf/utils/__init__.py,sha256=iAq5tqNSGcX5-t5CZkyyt6EFpAwH84spIXTCuJ46YMc,87
|
99
|
+
natural_pdf/utils/highlighting.py,sha256=2FWgBVZuoRTlsoKTKciBOhGtziLKQfI2Fyv3aklAfdg,25851
|
100
|
+
natural_pdf/utils/ocr.py,sha256=umnfiZ55JqO_uhXMvPGcje8eTG7jfI2WovRKfaYat7E,20308
|
101
|
+
natural_pdf/utils/reading_order.py,sha256=1oihH9ZTqQvIVDYc2oVEYqIXyPzi94ERtelp6TyzmWU,7594
|
102
|
+
natural_pdf/utils/visualization.py,sha256=Dujxp5xKbEap6UpoVEpArpkHChJLa_Je7FGz2S3Iwvw,5403
|
103
|
+
tests/__init__.py,sha256=34RJiJqy8uDxasGCbzXIaJlHQklHprscPcA4xp2s97g,30
|
104
|
+
tests/test_pdf.py,sha256=Ud-DI-GHAvnSJGMJewM_EwHtI_UgWTi7Gn9uIwQcpfE,1001
|
105
|
+
natural_pdf-25.3.16.dist-info/LICENSE,sha256=9zfwINwJlarbDmdh6iJV4QUG54QSJlSAUcnC1YiC_Ns,1074
|
106
|
+
natural_pdf-25.3.16.dist-info/METADATA,sha256=NzJ4A929jjoBvej1FByUxC9NhI5qGqlbIFos4gElEqQ,8365
|
107
|
+
natural_pdf-25.3.16.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
|
108
|
+
natural_pdf-25.3.16.dist-info/top_level.txt,sha256=2AueS3xkctrmlcDA_te2-_WG0A0wGhS0UQNwnr_cbFQ,27
|
109
|
+
natural_pdf-25.3.16.dist-info/RECORD,,
|
tests/__init__.py
ADDED
tests/test_pdf.py
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
"""
|
2
|
+
Tests for the PDF class.
|
3
|
+
"""
|
4
|
+
import os
|
5
|
+
import sys
|
6
|
+
import unittest
|
7
|
+
|
8
|
+
# Add the parent directory to the path to import the package
|
9
|
+
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
10
|
+
|
11
|
+
from natural_pdf import PDF
|
12
|
+
|
13
|
+
|
14
|
+
class TestPDF(unittest.TestCase):
|
15
|
+
"""Tests for the PDF class."""
|
16
|
+
|
17
|
+
def test_init(self):
|
18
|
+
"""Test PDF initialization."""
|
19
|
+
# This test will fail until a test PDF is available
|
20
|
+
# Commented out for now
|
21
|
+
# pdf = PDF("test.pdf")
|
22
|
+
# self.assertIsNotNone(pdf)
|
23
|
+
# self.assertTrue(hasattr(pdf, 'pages'))
|
24
|
+
# pdf.close()
|
25
|
+
pass
|
26
|
+
|
27
|
+
def test_page_access(self):
|
28
|
+
"""Test page access."""
|
29
|
+
# This test will fail until a test PDF is available
|
30
|
+
# Commented out for now
|
31
|
+
# pdf = PDF("test.pdf")
|
32
|
+
# self.assertTrue(len(pdf.pages) > 0)
|
33
|
+
# self.assertEqual(pdf.pages[0].number, 1)
|
34
|
+
# pdf.close()
|
35
|
+
pass
|
36
|
+
|
37
|
+
|
38
|
+
if __name__ == '__main__':
|
39
|
+
unittest.main()
|