pyxllib 0.3.105__tar.gz → 0.3.107__tar.gz

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 (345) hide show
  1. {pyxllib-0.3.105/pyxllib.egg-info → pyxllib-0.3.107}/PKG-INFO +1 -1
  2. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/algo/stat.py +4 -0
  3. pyxllib-0.3.107/pyxllib/file/libreoffice.py +164 -0
  4. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/file/xlsxlib.py +33 -22
  5. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/prog/pupil.py +3 -3
  6. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/prog/specialist/tictoc.py +1 -1
  7. {pyxllib-0.3.105 → pyxllib-0.3.107/pyxllib.egg-info}/PKG-INFO +1 -1
  8. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib.egg-info/SOURCES.txt +1 -0
  9. {pyxllib-0.3.105 → pyxllib-0.3.107}/setup.py +1 -1
  10. {pyxllib-0.3.105 → pyxllib-0.3.107}/LICENSE +0 -0
  11. {pyxllib-0.3.105 → pyxllib-0.3.107}/MANIFEST.in +0 -0
  12. {pyxllib-0.3.105 → pyxllib-0.3.107}/README.md +0 -0
  13. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/__init__.py +0 -0
  14. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/algo/__init__.py +0 -0
  15. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/algo/disjoint.py +0 -0
  16. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/algo/geo.py +0 -0
  17. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/algo/intervals.py +0 -0
  18. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/algo/matcher.py +0 -0
  19. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/algo/newbie.py +0 -0
  20. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/algo/pupil.py +0 -0
  21. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/algo/shapelylib.py +0 -0
  22. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/algo/specialist.py +0 -0
  23. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/algo/treelib.py +0 -0
  24. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/algo/unitlib.py +0 -0
  25. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/cv/__init__.py +0 -0
  26. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/cv/expert.py +0 -0
  27. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/cv/imfile.py +0 -0
  28. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/cv/imhash.py +0 -0
  29. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/cv/pupil.py +0 -0
  30. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/cv/rgbfmt.py +0 -0
  31. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/cv/trackbartools.py +0 -0
  32. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/cv/xlcvlib.py +0 -0
  33. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/cv/xlpillib.py +0 -0
  34. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/data/__init__.py +0 -0
  35. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/data/echarts.py +0 -0
  36. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/data/jsonlib.py +0 -0
  37. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/data/oss.py +0 -0
  38. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/data/pglib.py +0 -0
  39. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/data/sqlite.py +0 -0
  40. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/data/sqllib.py +0 -0
  41. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/JLineViewer.py +0 -0
  42. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/__init__.py +0 -0
  43. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/autogui/__init__.py +0 -0
  44. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/autogui/autogui.py +0 -0
  45. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/autogui/virtualkey.py +0 -0
  46. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/demolib.py +0 -0
  47. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/drissionlib.py +0 -0
  48. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/kq5034lib.py +0 -0
  49. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/old.py +0 -0
  50. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/qt.py +0 -0
  51. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/robustprocfile.py +0 -0
  52. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/seleniumlib.py +0 -0
  53. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/tk.py +0 -0
  54. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/unixlib.py +0 -0
  55. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/utools.py +0 -0
  56. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/webhook.py +0 -0
  57. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/win32lib.py +0 -0
  58. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/ext/yuquelib.py +0 -0
  59. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/file/__init__.py +0 -0
  60. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/file/docxlib.py +0 -0
  61. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/file/gitlib.py +0 -0
  62. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/file/movielib.py +0 -0
  63. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/file/newbie.py +0 -0
  64. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/file/onenotelib.py +0 -0
  65. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/file/packlib/__init__.py +0 -0
  66. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/file/packlib/zipfile.py +0 -0
  67. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/file/pdflib.py +0 -0
  68. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/file/pupil.py +0 -0
  69. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/file/specialist/__init__.py +0 -0
  70. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/file/specialist/dirlib.py +0 -0
  71. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/file/specialist/download.py +0 -0
  72. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/file/specialist/filelib.py +0 -0
  73. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/prog/__init__.py +0 -0
  74. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/prog/deprecatedlib.py +0 -0
  75. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/prog/ipyexec.py +0 -0
  76. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/prog/multiprocs.py +0 -0
  77. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/prog/newbie.py +0 -0
  78. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/prog/sitepackages.py +0 -0
  79. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/prog/specialist/__init__.py +0 -0
  80. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/prog/specialist/bc.py +0 -0
  81. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/prog/specialist/browser.py +0 -0
  82. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/prog/specialist/common.py +0 -0
  83. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/prog/specialist/datetime.py +0 -0
  84. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/prog/specialist/xllog.py +0 -0
  85. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/prog/xlosenv.py +0 -0
  86. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/stdlib/__init__.py +0 -0
  87. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
  88. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/stdlib/tablepyxl/style.py +0 -0
  89. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
  90. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/__init__.py +0 -0
  91. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/ahocorasick.py +0 -0
  92. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/charclasslib.py +0 -0
  93. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/jiebalib.py +0 -0
  94. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/jscode.py +0 -0
  95. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/latex/__init__.py +0 -0
  96. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/levenshtein.py +0 -0
  97. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/nestenv.py +0 -0
  98. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/newbie.py +0 -0
  99. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/pupil/__init__.py +0 -0
  100. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/pupil/common.py +0 -0
  101. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/pupil/xlalign.py +0 -0
  102. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/pycode.py +0 -0
  103. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/specialist/__init__.py +0 -0
  104. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/specialist/common.py +0 -0
  105. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/specialist/ptag.py +0 -0
  106. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/spellchecker.py +0 -0
  107. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/vbacode.py +0 -0
  108. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/text/xmllib.py +0 -0
  109. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/xl.py +0 -0
  110. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib/xlcv.py +0 -0
  111. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib.egg-info/dependency_links.txt +0 -0
  112. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib.egg-info/requires.txt +4 -4
  113. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxllib.egg-info/top_level.txt +0 -0
  114. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/__init__.py +0 -0
  115. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ai/__init__.py +0 -0
  116. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ai/clientlib.py +0 -0
  117. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ai/specialist.py +0 -0
  118. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ai/torch_app.py +0 -0
  119. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ai/xlpaddle.py +0 -0
  120. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ai/xltorch.py +0 -0
  121. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/data/__init__.py +0 -0
  122. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/data/coco.py +0 -0
  123. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/data/datacls.py +0 -0
  124. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/data/datasets.py +0 -0
  125. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/data/gptlib.py +0 -0
  126. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/data/icdar/__init__.py +0 -0
  127. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/data/icdar/deteval.py +0 -0
  128. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/data/icdar/icdar2013.py +0 -0
  129. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/data/icdar/iou.py +0 -0
  130. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
  131. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/data/imtextline.py +0 -0
  132. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/data/labelme.py +0 -0
  133. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/data/removeline.py +0 -0
  134. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/data/specialist.py +0 -0
  135. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/eval/__init__.py +0 -0
  136. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/paddleocr.py +0 -0
  137. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/__init__.py +0 -0
  138. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
  139. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/__init__.py +0 -0
  140. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
  141. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
  142. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
  143. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
  144. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
  145. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
  146. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
  147. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
  148. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
  149. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
  150. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
  151. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
  152. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
  153. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
  154. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
  155. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
  156. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
  157. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
  158. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
  159. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
  160. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
  161. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
  162. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
  163. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/__init__.py +0 -0
  164. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
  165. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
  166. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/center_loss.py +0 -0
  167. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
  168. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
  169. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
  170. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
  171. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
  172. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
  173. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
  174. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
  175. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
  176. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
  177. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
  178. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
  179. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
  180. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
  181. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
  182. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
  183. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
  184. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
  185. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/metrics/__init__.py +0 -0
  186. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
  187. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
  188. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
  189. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
  190. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
  191. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
  192. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
  193. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
  194. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
  195. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
  196. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
  197. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
  198. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
  199. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
  200. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
  201. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
  202. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
  203. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
  204. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
  205. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
  206. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
  207. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
  208. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
  209. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
  210. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
  211. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
  212. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
  213. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
  214. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
  215. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
  216. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
  217. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
  218. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
  219. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
  220. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
  221. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
  222. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
  223. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
  224. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
  225. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
  226. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
  227. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
  228. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
  229. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
  230. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
  231. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
  232. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
  233. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
  234. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
  235. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
  236. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
  237. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
  238. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
  239. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
  240. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
  241. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
  242. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
  243. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
  244. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
  245. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
  246. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
  247. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
  248. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
  249. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
  250. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
  251. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
  252. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
  253. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
  254. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
  255. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
  256. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/__init__.py +0 -0
  257. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/eval.py +0 -0
  258. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/export_center.py +0 -0
  259. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/export_model.py +0 -0
  260. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
  261. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
  262. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
  263. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
  264. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
  265. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
  266. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
  267. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/infer_det.py +0 -0
  268. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
  269. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
  270. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
  271. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/infer_table.py +0 -0
  272. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/program.py +0 -0
  273. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
  274. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/train.py +0 -0
  275. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/tools/xlprog.py +0 -0
  276. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
  277. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/__init__.py +0 -0
  278. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
  279. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
  280. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
  281. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
  282. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
  283. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
  284. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
  285. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
  286. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
  287. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
  288. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
  289. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
  290. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
  291. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
  292. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
  293. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
  294. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
  295. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
  296. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
  297. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
  298. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
  299. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
  300. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
  301. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
  302. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
  303. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
  304. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
  305. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
  306. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
  307. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
  308. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
  309. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
  310. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/dict90.txt +0 -0
  311. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
  312. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
  313. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
  314. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
  315. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
  316. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
  317. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
  318. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
  319. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/gen_label.py +0 -0
  320. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
  321. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/iou.py +0 -0
  322. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/logging.py +0 -0
  323. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/network.py +0 -0
  324. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
  325. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/profiler.py +0 -0
  326. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/save_load.py +0 -0
  327. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/stats.py +0 -0
  328. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppocr/utils/utility.py +0 -0
  329. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppstructure/__init__.py +0 -0
  330. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppstructure/predict_system.py +0 -0
  331. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppstructure/table/__init__.py +0 -0
  332. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppstructure/table/eval_table.py +0 -0
  333. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppstructure/table/matcher.py +0 -0
  334. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
  335. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppstructure/table/predict_table.py +0 -0
  336. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
  337. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
  338. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
  339. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
  340. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
  341. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
  342. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/ppstructure/utility.py +0 -0
  343. {pyxllib-0.3.105 → pyxllib-0.3.107}/pyxlpr/xlai.py +0 -0
  344. {pyxllib-0.3.105 → pyxllib-0.3.107}/requirements.txt +0 -0
  345. {pyxllib-0.3.105 → pyxllib-0.3.107}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.105
3
+ Version: 0.3.107
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -18,6 +18,10 @@ from pyxllib.prog.pupil import dprint, typename
18
18
  from pyxllib.file.specialist import XlPath
19
19
 
20
20
  pd.options.display.unicode.east_asian_width = True # 优化中文输出对齐问题
21
+ try:
22
+ pd.set_option('future.no_silent_downcasting', True)
23
+ except Exception as e:
24
+ pass
21
25
 
22
26
 
23
27
  def treetable(childreds, parents, arg3=None, nodename_colname=None):
@@ -0,0 +1,164 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # @Author : 陈坤泽
4
+ # @Email : 877362867@qq.com
5
+ # @Date : 2024/04/27
6
+
7
+ """
8
+ libreoffice这个软件相关的功能
9
+
10
+ 官网:https://www.libreoffice.org/download/download-libreoffice/
11
+
12
+ linux的安装:
13
+ sudo apt-get update
14
+ sudo apt-get install libreoffice -y
15
+ """
16
+
17
+ import os
18
+ from pathlib import Path
19
+ import subprocess
20
+ import sys
21
+ import tempfile
22
+ from datetime import datetime
23
+
24
+
25
+ def check_libreoffice():
26
+ """ 检查LibreOffice是否安装 """
27
+ executor = get_libreoffice_executor()
28
+ try:
29
+ subprocess.run([executor, '--version'], check=True)
30
+ except FileNotFoundError:
31
+ return False
32
+ except subprocess.CalledProcessError:
33
+ return False
34
+ return True
35
+
36
+
37
+ def get_libreoffice_executor():
38
+ """ 获得可执行文件的名称 """
39
+ # 根据所在系统区分
40
+ if sys.platform == 'win32':
41
+ return 'soffice.exe'
42
+ else:
43
+ return 'libreoffice'
44
+
45
+
46
+ def infer_file_format(file_path):
47
+ """ 推断文件所属办公文档的'主类' """
48
+ ext = Path(file_path).suffix.lower()
49
+ if ext in ['.doc', '.docx']:
50
+ fmt = 'docx'
51
+ elif ext in ['.ppt', '.pptx']:
52
+ fmt = 'pptx'
53
+ elif ext in ['.xls', '.xlsx']:
54
+ fmt = 'xlsx'
55
+ else:
56
+ raise ValueError("不支持的文件格式")
57
+ return fmt
58
+
59
+
60
+ class UpgradeOfficeFile:
61
+ @classmethod
62
+ def to_dir(cls, file_path, out_dir=None, fmt=None, timeout=10):
63
+ """ 将doc文件转换为docx文件
64
+
65
+ :param file_path: 待升级的文件路径
66
+ :param out_dir: 输出文件目录
67
+ 官方接口默认只能设置导出目录,不能设置导出文件名,文件名是跟原始文件一样的
68
+ :param fmt: 输出文件格式
69
+ docx, xlsx, pptx
70
+ """
71
+ if isinstance(file_path, Path):
72
+ file_path = file_path.as_posix()
73
+
74
+ # 获取LibreOffice可执行文件的名称
75
+ executor = get_libreoffice_executor()
76
+
77
+ # 如果未指定输出路径,则默认在输入文件的同目录下生成同名的DOCX文件
78
+ if out_dir is None:
79
+ out_dir = os.path.dirname(file_path)
80
+
81
+ if fmt is None:
82
+ fmt = infer_file_format(file_path)
83
+
84
+ # 构建转换命令
85
+ command = [
86
+ executor,
87
+ '--headless', # 无界面模式
88
+ '--convert-to', fmt, # 转换为docx格式
89
+ '--outdir', str(out_dir), # 输出目录
90
+ file_path # 输入文件路径
91
+ ]
92
+
93
+ subprocess.run(command, timeout=timeout, check=True)
94
+
95
+ # 返回转换后的文件路径
96
+ base_name = os.path.basename(file_path)
97
+ name, _ = os.path.splitext(base_name)
98
+ new_file_path = os.path.join(out_dir, f"{name}.{fmt}")
99
+
100
+ # todo 以目标文件是否存在判断转换是否成功也是有一定bug的,可能目标文件本来就存在
101
+ # 但如果严谨判断,就要分析subprocess.run的输出结果了,那个太麻烦,先用简便方法处理
102
+ if not Path(new_file_path).exists():
103
+ raise ValueError(f"升级文档失败")
104
+
105
+ return new_file_path
106
+
107
+ @classmethod
108
+ def to_file(cls, in_file, out_file=None, fmt=None, timeout=10):
109
+ """ 可以指定转换出的文件名的版本
110
+
111
+ :param in_file: 待转换的文件路径
112
+ :param out_file: 输出文件路径
113
+ 若未指定,默认与原文件同名,在原文件所在目录生成
114
+ :param fmt: 输出文件格式
115
+ docx, xlsx, pptx
116
+ 若未指定,则根据in_file的后缀名自动判断
117
+ """
118
+ # 将in_file转换为Path对象
119
+ in_file = Path(in_file)
120
+
121
+ # 如果fmt为None,则根据in_file推断
122
+ if fmt is None:
123
+ fmt = infer_file_format(in_file)
124
+
125
+ # 如果out_file为None,则默认在原文件目录生成同名的新格式文件
126
+ if out_file is None:
127
+ out_file = in_file.with_suffix(f'.{fmt}')
128
+ else:
129
+ out_file = Path(out_file)
130
+
131
+ # 确保out_file的父目录存在,不存在则创建
132
+ out_file.parent.mkdir(parents=True, exist_ok=True)
133
+
134
+ # 调用upgrade_office_file函数进行转换
135
+ temp_file = cls.to_dir(in_file, out_dir=out_file.parent, fmt=fmt, timeout=timeout)
136
+
137
+ # 将生成的临时文件重命名为out_file
138
+ os.rename(temp_file, out_file)
139
+
140
+ return out_file
141
+
142
+ @classmethod
143
+ def to_tempfile(cls, in_file, fmt=None, *, timestamp_stem=False, create_subdir=False, timeout=10):
144
+ """ 将文件转换为临时文件
145
+
146
+ :param timestamp_stem: 时间戳文件名
147
+ :param create_subdir: 是否在临时目录中创建新的子目录
148
+ """
149
+ if fmt is None:
150
+ fmt = infer_file_format(in_file)
151
+
152
+ root = Path(tempfile.gettempdir())
153
+ if create_subdir:
154
+ root2 = root / datetime.now().strftime('%Y%m%d.%H%M%S.%f')
155
+ root2.mkdir(parents=True, exist_ok=True)
156
+ root = root2
157
+
158
+ if timestamp_stem:
159
+ stem = datetime.now().strftime('%Y%m%d.%H%M%S.%f')
160
+ out_file = cls.to_file(in_file, out_file=root / f"{stem}.{fmt}", fmt=fmt, timeout=timeout)
161
+ else:
162
+ out_file = cls.to_dir(in_file, out_dir=root, fmt=fmt, timeout=timeout)
163
+
164
+ return out_file
@@ -2650,30 +2650,39 @@ class WorkbookSummary3:
2650
2650
  for addr, _ in row:
2651
2651
  new_cells[addr] = cells[addr]
2652
2652
 
2653
- new_cells = {}
2654
- for rows in rows_groups:
2653
+ total_new_cells = []
2654
+ for rows in reversed(rows_groups):
2655
+ new_cells = {}
2655
2656
  if len(rows) < 10:
2656
2657
  extract_cells_from_rows(rows)
2657
2658
  else: # 压缩中间的数据
2658
2659
  # 如果评估到最终摘要可能太小,要收敛下删除的范围
2659
2660
  n, m = len(rows), len(rows[0])
2660
2661
  target_n = int(target_reduce_cells_num / m + 0.5) # 本来应该删除多少行才行
2661
- cur_n = n - 4 if target_n > n - 4 else target_n # 实际删除多少行
2662
- left_n = n - cur_n # 剩余多少行
2663
- b = left_n // 2
2664
- a = left_n - b
2665
-
2666
- extract_cells_from_rows(rows[:a])
2667
- addr = combine_addresses(rows[a][0][0], rows[-b - 1][-1][0])
2668
- # new_cells[addr] = '这块区域的内容跟前面几行、后面几行的内容结构是一致的,省略显示'
2669
- new_cells[addr] = '...'
2670
- extract_cells_from_rows(rows[-b:])
2671
-
2672
- target_reduce_cells_num -= cur_n * m
2673
- if target_reduce_cells_num <= 0:
2674
- break
2675
-
2676
- sheet['cells'] = new_cells
2662
+ if target_n <= 0: # 如果删除的行数太少,那么就不压缩了
2663
+ extract_cells_from_rows(rows)
2664
+ else:
2665
+ cur_n = n - 4 if target_n > n - 4 else target_n # 实际删除多少行
2666
+ left_n = n - cur_n # 剩余多少行
2667
+ b = left_n // 2
2668
+ a = left_n - b
2669
+
2670
+ extract_cells_from_rows(rows[:a])
2671
+ addr = combine_addresses(rows[a][0][0], rows[-b - 1][-1][0])
2672
+ # new_cells[addr] = '这块区域的内容跟前面几行、后面几行的内容结构是一致的,省略显示'
2673
+ new_cells[addr] = '...'
2674
+ extract_cells_from_rows(rows[-b:])
2675
+
2676
+ target_reduce_cells_num -= cur_n * m
2677
+ # 240429周一21:57,这两行不能开,否则会过渡精简。如果压缩够了,那么后面的单元格需要全量补上。
2678
+ # if target_reduce_cells_num <= 0: # 满足以后不是直接break,而是要把后续的内容都保留
2679
+ # break
2680
+ total_new_cells.append(new_cells)
2681
+
2682
+ new_cells2 = {}
2683
+ for rows in reversed(total_new_cells):
2684
+ new_cells2.update(rows)
2685
+ sheet['cells'] = new_cells2
2677
2686
 
2678
2687
  @classmethod
2679
2688
  def reduce4_truncate_cells(cls, y, summary_limit_len, *, cur_summary_len=None):
@@ -2805,6 +2814,7 @@ class WorkbookSummary3:
2805
2814
  if cur_summary_len is None:
2806
2815
  cur_summary_len = cls.count_length(y)
2807
2816
 
2817
+ cur_summary_len0 = cur_summary_len
2808
2818
  active_sheet = y['ActiveSheet']
2809
2819
 
2810
2820
  # 1 预计要删除单元格数
@@ -2836,7 +2846,8 @@ class WorkbookSummary3:
2836
2846
  return cls.count_length(y)
2837
2847
 
2838
2848
  # 4 否则每张表按照比例删单元格,只保留前面部分的单元格
2839
- left_rate = 1 - r # 原始保留比例
2849
+ # todo 这里应该有更好的筛选机制,后续可以思考思考
2850
+ left_rate = min((summary_limit_len + cur_summary_len) / 2 * cur_summary_len, 0.9) # 首轮减小一点调整幅度
2840
2851
  while True:
2841
2852
  for i, st in enumerate(y['sheets']):
2842
2853
  if i == active_sheet_index:
@@ -2848,10 +2859,10 @@ class WorkbookSummary3:
2848
2859
  cur_summary_len = cls.count_length(y)
2849
2860
  if cur_summary_len <= summary_limit_len:
2850
2861
  return cur_summary_len
2851
- if left_rate * total_cells_num < 1:
2862
+ if left_rate * total_cells_num < 1: # 都没有单元格,别删了
2852
2863
  break
2853
- else:
2854
- left_rate *= 0.8 # 缩小保留比例,再试
2864
+ else: # 更新保留比率,再试
2865
+ left_rate *= min(summary_limit_len / cur_summary_len, 0.9)
2855
2866
 
2856
2867
  return cur_summary_len
2857
2868
 
@@ -979,7 +979,7 @@ class MultiProcessLauncher:
979
979
  def __init__(self):
980
980
  self.workers = []
981
981
 
982
- def add_process(self, cmd, name=None, **kwargs):
982
+ def add_process_cmd(self, cmd, name=None, **kwargs):
983
983
  if name is None:
984
984
  name = cmd.split()[0]
985
985
 
@@ -988,7 +988,7 @@ class MultiProcessLauncher:
988
988
  worker.update(kwargs)
989
989
  self.workers.append(worker)
990
990
 
991
- def add_python_module(self, module, args='', name=None):
991
+ def add_process_python_module(self, module, args='', name=None):
992
992
  """ 添加并启动一个Python模块作为后台进程。
993
993
 
994
994
  :param module: 要执行的Python模块名(python -m 后面的部分)
@@ -996,7 +996,7 @@ class MultiProcessLauncher:
996
996
  :param name: 进程的名称,默认为模块名
997
997
  """
998
998
  cmd = f'{sys.executable} -m {module} {args}'
999
- self.add_process(cmd, name=name)
999
+ self.add_process_cmd(cmd, name=name)
1000
1000
 
1001
1001
  def stop_all(self):
1002
1002
  """ 停止所有后台进程 """
@@ -70,7 +70,7 @@ class TicToc:
70
70
 
71
71
  def tocvalue(self, restart=False):
72
72
  """
73
- Return time elapsed since last call to tic().
73
+ Return time elapsed seconds since last call to tic().
74
74
 
75
75
  Optional argument:
76
76
  restart - Boolean specifying whether to restart the timer
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.105
3
+ Version: 0.3.107
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -60,6 +60,7 @@ pyxllib/ext/autogui/virtualkey.py
60
60
  pyxllib/file/__init__.py
61
61
  pyxllib/file/docxlib.py
62
62
  pyxllib/file/gitlib.py
63
+ pyxllib/file/libreoffice.py
63
64
  pyxllib/file/movielib.py
64
65
  pyxllib/file/newbie.py
65
66
  pyxllib/file/onenotelib.py
@@ -30,7 +30,7 @@ _dir = Path(__file__).parent
30
30
 
31
31
  setup(
32
32
  name='pyxllib', # pip 安装时用的名字
33
- version='0.3.105', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
33
+ version='0.3.107', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
34
34
  author='code4101',
35
35
  author_email='877362867@qq.com',
36
36
  url='https://github.com/XLPRUtils/pyxllib',
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -22,13 +22,13 @@ pandas>=0.23.4
22
22
 
23
23
  [xlai]
24
24
  visdom
25
- pynvml
26
- pillow
27
25
  opsdroid-get-image-size
28
- opencv-python
29
26
  xlcocotools
27
+ opencv-python
28
+ pynvml
29
+ pillow
30
30
 
31
31
  [xlcv]
32
32
  opsdroid-get-image-size
33
- opencv-python
34
33
  pillow
34
+ opencv-python
File without changes