pyxllib 0.3.86__tar.gz → 0.3.87a0__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 (339) hide show
  1. {pyxllib-0.3.86/pyxllib.egg-info → pyxllib-0.3.87a0}/PKG-INFO +1 -1
  2. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/algo/stat.py +2 -0
  3. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/data/pglib.py +3 -1
  4. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/file/xlsxlib.py +291 -55
  5. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/xl.py +7 -1
  6. {pyxllib-0.3.86 → pyxllib-0.3.87a0/pyxllib.egg-info}/PKG-INFO +1 -1
  7. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ai/clientlib.py +4 -1
  8. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/data/gptlib.py +11 -7
  9. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/setup.py +1 -1
  10. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/LICENSE +0 -0
  11. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/MANIFEST.in +0 -0
  12. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/README.md +0 -0
  13. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/__init__.py +0 -0
  14. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/algo/__init__.py +0 -0
  15. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/algo/disjoint.py +0 -0
  16. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/algo/geo.py +0 -0
  17. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/algo/intervals.py +0 -0
  18. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/algo/matcher.py +0 -0
  19. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/algo/newbie.py +0 -0
  20. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/algo/pupil.py +0 -0
  21. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/algo/shapelylib.py +0 -0
  22. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/algo/specialist.py +0 -0
  23. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/algo/treelib.py +0 -0
  24. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/algo/unitlib.py +0 -0
  25. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/cv/__init__.py +0 -0
  26. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/cv/expert.py +0 -0
  27. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/cv/imfile.py +0 -0
  28. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/cv/imhash.py +0 -0
  29. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/cv/pupil.py +0 -0
  30. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/cv/rgbfmt.py +0 -0
  31. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/cv/trackbartools.py +0 -0
  32. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/cv/xlcvlib.py +0 -0
  33. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/cv/xlpillib.py +0 -0
  34. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/data/__init__.py +0 -0
  35. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/data/echarts.py +0 -0
  36. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/data/oss.py +0 -0
  37. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/data/sqlite.py +0 -0
  38. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/data/sqllib.py +0 -0
  39. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/ext/JLineViewer.py +0 -0
  40. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/ext/__init__.py +0 -0
  41. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/ext/autogui/__init__.py +0 -0
  42. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/ext/autogui/autogui.py +0 -0
  43. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/ext/autogui/virtualkey.py +0 -0
  44. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/ext/demolib.py +0 -0
  45. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/ext/kq5034lib.py +0 -0
  46. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/ext/old.py +0 -0
  47. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/ext/qt.py +0 -0
  48. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/ext/seleniumlib.py +0 -0
  49. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/ext/tk.py +0 -0
  50. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/ext/unixlib.py +0 -0
  51. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/ext/utools.py +0 -0
  52. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/ext/webhook.py +0 -0
  53. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/ext/win32lib.py +0 -0
  54. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/file/__init__.py +0 -0
  55. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/file/docxlib.py +0 -0
  56. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/file/gitlib.py +0 -0
  57. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/file/movielib.py +0 -0
  58. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/file/newbie.py +0 -0
  59. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/file/onenotelib.py +0 -0
  60. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/file/packlib/__init__.py +0 -0
  61. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/file/packlib/zipfile.py +0 -0
  62. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/file/pdflib.py +0 -0
  63. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/file/pupil.py +0 -0
  64. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/file/specialist/__init__.py +0 -0
  65. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/file/specialist/dirlib.py +0 -0
  66. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/file/specialist/download.py +0 -0
  67. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/file/specialist/filelib.py +0 -0
  68. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/prog/__init__.py +0 -0
  69. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/prog/deprecatedlib.py +0 -0
  70. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/prog/ipyexec.py +0 -0
  71. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/prog/newbie.py +0 -0
  72. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/prog/pupil.py +0 -0
  73. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/prog/sitepackages.py +0 -0
  74. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/prog/specialist/__init__.py +0 -0
  75. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/prog/specialist/bc.py +0 -0
  76. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/prog/specialist/browser.py +0 -0
  77. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/prog/specialist/common.py +0 -0
  78. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/prog/specialist/datetime.py +0 -0
  79. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/prog/specialist/tictoc.py +0 -0
  80. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/prog/specialist/xllog.py +0 -0
  81. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/prog/xlosenv.py +0 -0
  82. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/stdlib/__init__.py +0 -0
  83. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
  84. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/stdlib/tablepyxl/style.py +0 -0
  85. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
  86. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/__init__.py +0 -0
  87. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/ahocorasick.py +0 -0
  88. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/charclasslib.py +0 -0
  89. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/jiebalib.py +0 -0
  90. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/jscode.py +0 -0
  91. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/latex/__init__.py +0 -0
  92. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/levenshtein.py +0 -0
  93. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/nestenv.py +0 -0
  94. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/newbie.py +0 -0
  95. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/pupil/__init__.py +0 -0
  96. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/pupil/common.py +0 -0
  97. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/pupil/xlalign.py +0 -0
  98. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/pycode.py +0 -0
  99. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/specialist/__init__.py +0 -0
  100. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/specialist/common.py +0 -0
  101. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/specialist/ptag.py +0 -0
  102. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/spellchecker.py +0 -0
  103. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/vbacode.py +0 -0
  104. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/text/xmllib.py +0 -0
  105. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib/xlcv.py +0 -0
  106. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib.egg-info/SOURCES.txt +0 -0
  107. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib.egg-info/dependency_links.txt +0 -0
  108. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib.egg-info/requires.txt +5 -5
  109. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxllib.egg-info/top_level.txt +0 -0
  110. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/__init__.py +0 -0
  111. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ai/__init__.py +0 -0
  112. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ai/specialist.py +0 -0
  113. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ai/torch_app.py +0 -0
  114. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ai/xlpaddle.py +0 -0
  115. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ai/xltorch.py +0 -0
  116. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/data/__init__.py +0 -0
  117. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/data/coco.py +0 -0
  118. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/data/datacls.py +0 -0
  119. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/data/datasets.py +0 -0
  120. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/data/icdar/__init__.py +0 -0
  121. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/data/icdar/deteval.py +0 -0
  122. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/data/icdar/icdar2013.py +0 -0
  123. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/data/icdar/iou.py +0 -0
  124. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
  125. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/data/imtextline.py +0 -0
  126. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/data/labelme.py +0 -0
  127. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/data/removeline.py +0 -0
  128. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/data/specialist.py +0 -0
  129. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/eval/__init__.py +0 -0
  130. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/paddleocr.py +0 -0
  131. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/__init__.py +0 -0
  132. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
  133. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/__init__.py +0 -0
  134. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
  135. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
  136. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
  137. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
  138. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
  139. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
  140. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
  141. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
  142. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
  143. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
  144. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
  145. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
  146. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
  147. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
  148. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
  149. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
  150. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
  151. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
  152. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
  153. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
  154. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
  155. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
  156. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
  157. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/__init__.py +0 -0
  158. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
  159. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
  160. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/center_loss.py +0 -0
  161. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
  162. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
  163. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
  164. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
  165. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
  166. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
  167. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
  168. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
  169. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
  170. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
  171. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
  172. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
  173. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
  174. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
  175. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
  176. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
  177. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
  178. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
  179. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/metrics/__init__.py +0 -0
  180. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
  181. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
  182. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
  183. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
  184. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
  185. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
  186. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
  187. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
  188. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
  189. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
  190. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
  191. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
  192. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
  193. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
  194. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
  195. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
  196. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
  197. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
  198. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
  199. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
  200. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
  201. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
  202. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
  203. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
  204. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
  205. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
  206. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
  207. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
  208. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
  209. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
  210. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
  211. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
  212. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
  213. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
  214. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
  215. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
  216. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
  217. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
  218. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
  219. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
  220. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
  221. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
  222. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
  223. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
  224. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
  225. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
  226. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
  227. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
  228. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
  229. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
  230. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
  231. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
  232. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
  233. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
  234. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
  235. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
  236. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
  237. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
  238. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
  239. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
  240. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
  241. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
  242. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
  243. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
  244. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
  245. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
  246. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
  247. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
  248. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
  249. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
  250. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/__init__.py +0 -0
  251. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/eval.py +0 -0
  252. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/export_center.py +0 -0
  253. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/export_model.py +0 -0
  254. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
  255. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
  256. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
  257. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
  258. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
  259. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
  260. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
  261. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/infer_det.py +0 -0
  262. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
  263. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
  264. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
  265. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/infer_table.py +0 -0
  266. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/program.py +0 -0
  267. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
  268. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/train.py +0 -0
  269. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/tools/xlprog.py +0 -0
  270. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
  271. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/__init__.py +0 -0
  272. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
  273. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
  274. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
  275. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
  276. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
  277. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
  278. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
  279. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
  280. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
  281. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
  282. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
  283. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
  284. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
  285. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
  286. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
  287. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
  288. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
  289. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
  290. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
  291. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
  292. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
  293. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
  294. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
  295. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
  296. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
  297. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
  298. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
  299. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
  300. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
  301. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
  302. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
  303. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
  304. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/dict90.txt +0 -0
  305. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
  306. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
  307. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
  308. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
  309. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
  310. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
  311. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
  312. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
  313. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/gen_label.py +0 -0
  314. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
  315. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/iou.py +0 -0
  316. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/logging.py +0 -0
  317. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/network.py +0 -0
  318. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
  319. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/profiler.py +0 -0
  320. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/save_load.py +0 -0
  321. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/stats.py +0 -0
  322. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppocr/utils/utility.py +0 -0
  323. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppstructure/__init__.py +0 -0
  324. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppstructure/predict_system.py +0 -0
  325. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppstructure/table/__init__.py +0 -0
  326. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppstructure/table/eval_table.py +0 -0
  327. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppstructure/table/matcher.py +0 -0
  328. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
  329. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppstructure/table/predict_table.py +0 -0
  330. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
  331. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
  332. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
  333. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
  334. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
  335. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
  336. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/ppstructure/utility.py +0 -0
  337. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/pyxlpr/xlai.py +0 -0
  338. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/requirements.txt +0 -0
  339. {pyxllib-0.3.86 → pyxllib-0.3.87a0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.86
3
+ Version: 0.3.87a0
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -17,6 +17,8 @@ import pandas as pd
17
17
  from pyxllib.prog.pupil import dprint, typename
18
18
  from pyxllib.file.specialist import XlPath
19
19
 
20
+ pd.options.display.unicode.east_asian_width = True # 优化中文输出对齐问题
21
+
20
22
 
21
23
  def treetable(childreds, parents, arg3=None, nodename_colname=None):
22
24
  """ 输入childres子结点id列表,和parents父结点id列表
@@ -93,12 +93,14 @@ class Connection(psycopg.Connection, SqlBase):
93
93
  # cur.close()
94
94
  return data
95
95
 
96
- def exec_dict(self, *args, **kwargs):
96
+ def exec2dict(self, *args, **kwargs):
97
97
  cur = self.cursor(row_factory=psycopg.rows.dict_row)
98
98
  data = cur.execute(*args, **kwargs)
99
99
  # cur.close()
100
100
  return data
101
101
 
102
+ exec_dict = exec2dict
103
+
102
104
  def __4_数据类型(self):
103
105
  pass
104
106
 
@@ -17,13 +17,14 @@ check_install_package('yattag')
17
17
  check_install_package('jsonpickle')
18
18
 
19
19
  from collections import Counter, OrderedDict, defaultdict
20
+ import csv
20
21
  import datetime
22
+ from itertools import islice
21
23
  import json
22
24
  import math
23
25
  from pathlib import Path
24
26
  import random
25
27
  import re
26
- import csv
27
28
 
28
29
  import xlrd
29
30
 
@@ -1780,6 +1781,28 @@ def build_range_address(left=None, top=None, right=None, bottom=None):
1780
1781
  return f"{start_cell}:{end_cell}"
1781
1782
 
1782
1783
 
1784
+ def combine_addresses(*addrs):
1785
+ # 初始化最小和最大行列值
1786
+ min_left, min_top, max_right, max_bottom = float('inf'), float('inf'), 0, 0
1787
+
1788
+ # 遍历所有地址
1789
+ for addr in addrs:
1790
+ # 解析每个地址
1791
+ addr_dict = parse_range_address(addr)
1792
+
1793
+ # 更新最小和最大行列值
1794
+ if addr_dict['left'] is not None:
1795
+ min_left = min(min_left, addr_dict['left'])
1796
+ max_right = max(max_right, addr_dict['right'] if addr_dict['right'] is not None else addr_dict['left'])
1797
+ if addr_dict['top'] is not None:
1798
+ min_top = min(min_top, addr_dict['top'])
1799
+ max_bottom = max(max_bottom, addr_dict['bottom'] if addr_dict['bottom'] is not None else addr_dict['top'])
1800
+
1801
+ # 构建新的地址字符串
1802
+ new_addr = f"{get_column_letter(min_left)}{min_top}:{get_column_letter(max_right)}{max_bottom}"
1803
+ return new_addr
1804
+
1805
+
1783
1806
  def is_string_type(value):
1784
1807
  """检查值是否为字符串类型,不是数值或日期类型"""
1785
1808
  # 首先检查日期类型
@@ -2195,26 +2218,17 @@ def extract_workbook_summary2(file_path, *,
2195
2218
  wb = process_file(file_path, suffix, timeout_seconds, keep_links, ignore_errors)
2196
2219
 
2197
2220
  # 2 提取摘要
2198
- with TicToc('提取摘要'):
2199
- res = wb.extract_summary2()
2200
- res['fileName'] = Path(file_path).name
2221
+ # with TicToc('提取摘要'):
2222
+ res = wb.extract_summary2()
2223
+ res['fileName'] = Path(file_path).name
2201
2224
 
2202
2225
  # todo 摘要精简?
2203
2226
 
2204
2227
  return res
2205
2228
 
2206
2229
 
2207
- def extract_workbook_summary2plus(file_path, **kwargs):
2208
- """ 增加了全局ratio的计算 """
2209
- # 1 主体摘要
2210
- data = extract_workbook_summary2(file_path, **kwargs)
2211
- if not data:
2212
- return data
2213
-
2214
- # 2 增加一些特征计算
2215
- # todo 后续估计要改成按table的颗粒度统计以下特征
2216
-
2217
- # 2.1 中文率
2230
+ def update_raw_summary2(data):
2231
+ # 1 中文率
2218
2232
  if 'chineseContentRatio' not in data:
2219
2233
  texts = [data['fileName']] # 文件名和表格名都要加上
2220
2234
  texts += [x for x in data['sheetNames']]
@@ -2223,7 +2237,7 @@ def extract_workbook_summary2plus(file_path, **kwargs):
2223
2237
  all_text = ''.join(map(str, texts))
2224
2238
  data['chineseContentRatio'] = round(calc_chinese_ratio(all_text), 4)
2225
2239
 
2226
- # 2.2 非空单元格率
2240
+ # 2 非空单元格率
2227
2241
  if 'nonEmptyCellRatio' not in data:
2228
2242
  content_area, total_area = 0, 0
2229
2243
  for sheet in data['sheets']:
@@ -2243,49 +2257,271 @@ def extract_workbook_summary2plus(file_path, **kwargs):
2243
2257
  return data
2244
2258
 
2245
2259
 
2246
- def worksheet_find_tables(ws, used_range=None):
2247
- """ 找到该sheet里可能有哪些tables区域 """
2248
- if used_range is None:
2249
- used_range = ws.get_usedrange()
2260
+ def extract_workbook_summary2plus(file_path, **kwargs):
2261
+ """ 增加了全局ratio的计算 """
2262
+ # 1 主体摘要
2263
+ data = extract_workbook_summary2(file_path, **kwargs)
2264
+ if not data:
2265
+ return data
2250
2266
 
2251
- # 1 先给每个单元格计算一个权重标记
2267
+ # 2 增加一些特征计算
2268
+ # todo 后续估计要改成按table的颗粒度统计以下特征
2252
2269
 
2253
- # 2
2270
+ data = update_raw_summary2(data)
2271
+ return data
2254
2272
 
2255
2273
 
2256
- def extract_workbook_summary3(file_path, *,
2257
- timeout_seconds=None,
2258
- ignore_errors=False,
2259
- keep_links=False):
2260
- """
2261
- :param keep_links: 是否保留外部表格链接数据。如果保留,打开好像会有点问题。
2262
- """
2263
- # 1 读取文件wb
2264
- file_path = Path(file_path)
2265
- suffix = file_path.suffix.lower()
2266
- if suffix in ('.xlsx', '.xlsm'):
2267
- try:
2268
- if timeout_seconds is None:
2269
- wb: XlWorkbook = openpyxl.load_workbook(file_path, keep_links=keep_links)
2270
- else:
2271
- with Timeout(timeout_seconds):
2272
- wb: XlWorkbook = openpyxl.load_workbook(file_path, keep_links=keep_links)
2273
- except Exception as e:
2274
- if ignore_errors:
2275
- return {}
2276
- else:
2277
- raise e
2278
- elif suffix == '.xls': # 不推荐(这是在xlrd复现的一套摘要算法),只是部署的使用
2279
- wb = convert_xls_to_xlsx(file_path)
2280
- elif suffix == '.csv':
2281
- wb = convert_csv_to_xlsx(file_path)
2282
- else:
2283
- raise ValueError('不支持的文件类型')
2274
+ def summary2summary3(summary2, summary_limit_len=3000):
2275
+ def reduce_step1(y):
2276
+ for sheet in y['sheets']:
2277
+ new_cells = {}
2278
+ for addr, val in sheet['cells'].items():
2279
+ if val != '':
2280
+ new_cells[addr] = val
2281
+ sheet['cells'] = new_cells
2282
+
2283
+ cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2284
+ return cur_summary_len
2285
+
2286
+ def reduce_step2(y, cur_summary_len):
2287
+ """ 这个算法主要是为了解决单个单元格内容过长,导致整个表格摘要的总长度超过了预设限制的问题。
2288
+ 在数据摘要或者信息提取的场景中,我们常常需要将信息压缩到一定长度以便展示或处理,但同时又希望保留尽可能多的有用信息。
2289
+ 这就要求我们智能地缩减内容,特别是在单元格内容不均匀,某些格特别长的情况下。
2290
+
2291
+ **基本解决思路**:
2292
+ 1. 设定长度限制:首先明确总摘要长度的限制(`summary_limit_len`)和单个单元格内容的限制(`cell_limit_len`)。
2293
+ 2. 计算超额长度:计算当前总长度超出限制的部分(`delta_len`),这是我们需要通过截断来减少的目标长度。
2294
+ 3. 确定截断策略:为了尽可能保留有用信息,我们选择从最长的单元格开始截断,并且希望通过截断尽可能多的过长单元格来平衡摘要的总长度。
2295
+
2296
+ **具体的求解步骤**:
2297
+ 1. 筛选和排序:首先,从所有单元格中筛选出长度超过基准长度(`ref_cell_len`)的单元格,并按长度降序排序。
2298
+ 这样做是为了优先处理那些长度远超其他单元格的“异常”值。
2299
+ 2. 计算可能的减少长度:遍历这些超长单元格,逐个计算如果将当前单元格以及所有比它长的单元格都截断到下一个单元格的长度(或基准长度),
2300
+ 可以减少多少总长度。这个累计值被称为`possible_reduction`。
2301
+ 3. 确定截断点:在遍历的过程中,一旦`possible_reduction`达到或超过了我们的目标减少长度`delta_len`,或者遍历到了最后一个单元格,
2302
+ 我们就找到了一个合适的截断点。这个截断点将是当前单元格长度和下一个单元格长度(或基准长度)之间的某个值,确保截断后总长度不超过限制。
2303
+ 4. 执行截断:按照确定的截断点,更新所有需要截断的单元格的内容,并标记处理模式为“截断模式”。
2304
+
2305
+ 通过这个算法,我们能够在满足总长度限制的前提下,尽可能多地保留每个单元格的内容,
2306
+ 特别是对于那些内容本身就不是很长的单元格,可以避免或减少不必要的信息损失。
2307
+ """
2308
+ delta_len = cur_summary_len - summary_limit_len # 计算需要减少的长度
2309
+ ref_cell_len = int(summary_limit_len * 0.05) # 基准长度
2310
+ # 获取所有单元格,及其长度,只考虑大于基准长度的单元格
2311
+ all_cells = [(sheet, addr, val, len(val)) for sheet in y['sheets'] for addr, val in sheet['cells'].items()
2312
+ if isinstance(val, str) and len(val) > ref_cell_len]
2313
+ # 按长度降序排序
2314
+ all_cells.sort(key=lambda x: -x[3])
2315
+ # 逐个尝试截断单元格直到满足长度要求
2316
+ possible_reduction = 0
2317
+ for i, (_, _, _, length) in enumerate(all_cells):
2318
+ # 计算如果截断到下一个单元格长度会减少多少
2319
+ next_len = all_cells[i + 1][3] if i + 1 < len(all_cells) else ref_cell_len
2320
+ # 当前单元格长度与下一个单元格长度(或基准长度)的差值就是这一轮可能减少的长度
2321
+ # 对于第i个单元格,它和之前所有更长的单元格都将减少这么多长度
2322
+ possible_reduction += (length - next_len) * (i + 1)
2323
+ # 确定截断长度
2324
+ if possible_reduction >= delta_len or i == len(all_cells) - 1:
2325
+ truncation_length = length - max(delta_len // (i + 1), next_len)
2326
+ # 截断每个超长单元格
2327
+ for j in range(i + 1):
2328
+ sheet, addr, val, _ = all_cells[j]
2329
+ sheet['cells'][addr] = sheet['cells'][addr][:max(truncation_length - 3, 5)] + '...'
2330
+ break
2284
2331
 
2285
- # 2 提取摘要
2286
- res = wb.extract_summary3()
2287
- res['fileName'] = Path(file_path).name
2332
+ return cur_summary_len - possible_reduction
2333
+
2334
+ def reduce_step3(y, cur_summary_len):
2335
+ # 每个sheet本身其他摘要,按照5个单元格估算
2336
+ total_cells_num = sum([(len(st['cells']) + 5) for st in y['sheets']])
2337
+ avg_cell_len = cur_summary_len / total_cells_num
2338
+ # 目标删除单元格数量,向上取整
2339
+ target_reduce_cells_num = int((cur_summary_len - summary_limit_len) / avg_cell_len + 0.5)
2340
+
2341
+ # 相同区域,头尾至少要留2行,然后考虑压缩量,一般一块range至少要10行同构数据,进行中间至少6行的压缩描述才有意义
2342
+ # 考虑重要性,应该是从末尾表格,末尾数据往前检索压缩,直到压缩量满足要求
2343
+
2344
+ for sheet in reversed(y['sheets']):
2345
+ cells = sheet['cells']
2346
+ # 1 对单元格,先按行分组
2347
+ last_line_id = -1
2348
+ row_groups = []
2349
+ for addr, val in cells.items():
2350
+ m = re.search(r'\d+', addr)
2351
+ if not m: # 应该都一定能找到的,这个判断是为了防止报错
2352
+ continue
2353
+ line_id = int(m.group())
2288
2354
 
2289
- # todo 摘要精简?
2355
+ val_type_tag = '@' if isinstance(val, str) else '#'
2356
+ cell_tag = re.sub(r'\d+', '', addr) + val_type_tag
2290
2357
 
2291
- return res
2358
+ if line_id == last_line_id:
2359
+ row_groups[-1].append([addr, cell_tag])
2360
+ else:
2361
+ row_groups.append([[addr, cell_tag]])
2362
+ last_line_id = line_id
2363
+
2364
+ # 2 算出每一行的row_tag,并按照row_tag再分组
2365
+ last_row_tag = ''
2366
+ rows_groups = []
2367
+ for row in row_groups:
2368
+ row_tag = ''.join([cell_tag for _, cell_tag in row])
2369
+ if row_tag == last_row_tag:
2370
+ rows_groups[-1].append(row)
2371
+ else:
2372
+ rows_groups.append([row])
2373
+ last_row_tag = row_tag
2374
+
2375
+ # 3 开始压缩
2376
+ def extract_cells_from_rows(rows):
2377
+ for row in rows:
2378
+ for addr, _ in row:
2379
+ new_cells[addr] = cells[addr]
2380
+
2381
+ new_cells = {}
2382
+ for rows in rows_groups:
2383
+ if len(rows) < 10:
2384
+ extract_cells_from_rows(rows)
2385
+ else: # 压缩中间的数据
2386
+ # 如果评估到最终摘要可能太小,要收敛下删除的范围
2387
+ n, m = len(rows), len(rows[0])
2388
+ target_n = int(target_reduce_cells_num / m + 0.5) # 本来应该删除多少行才行
2389
+ cur_n = n - 4 if target_n > n - 4 else target_n # 实际删除多少行
2390
+ left_n = n - cur_n # 剩余多少行
2391
+ b = left_n // 2
2392
+ a = left_n - b
2393
+
2394
+ extract_cells_from_rows(rows[:a])
2395
+ addr = combine_addresses(rows[a][0][0], rows[-b - 1][-1][0])
2396
+ # new_cells[addr] = '这块区域的内容跟前面几行、后面几行的内容结构是一致的,省略显示'
2397
+ new_cells[addr] = '...'
2398
+ extract_cells_from_rows(rows[-b:])
2399
+
2400
+ target_reduce_cells_num -= cur_n * m
2401
+ if target_reduce_cells_num <= 0:
2402
+ break
2403
+
2404
+ sheet['cells'] = new_cells
2405
+
2406
+ cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2407
+ return cur_summary_len
2408
+
2409
+ def reduce_step4(y, cur_summary_len):
2410
+ # 1 预计要删除单元格数
2411
+ # 每个sheet本身其他摘要,按照5个单元格估算
2412
+ total_cells_num = sum([(len(st['cells']) + 5) for st in y['sheets']])
2413
+ avg_cell_len = cur_summary_len / total_cells_num
2414
+ # 目标删除单元格数量,向上取整
2415
+ target_reduce_cells_num = int((cur_summary_len - summary_limit_len) / avg_cell_len + 0.5)
2416
+
2417
+ # 2 每张表格的单元格数
2418
+ sheet_cells_num = [len(st['cells']) for st in y['sheets']]
2419
+ total_cells_num = sum([n for n in sheet_cells_num])
2420
+
2421
+ # 3 所有的单元格如果都不够删,那就先把所有cells删了再说
2422
+ if total_cells_num < target_reduce_cells_num:
2423
+ for st in y['sheets']:
2424
+ st['cells'] = {}
2425
+ return len(json.dumps(y, ensure_ascii=False))
2426
+
2427
+ # 4 否则每张表按照比例删单元格,只保留前面部分的单元格
2428
+ left_rate = 1 - target_reduce_cells_num / total_cells_num
2429
+ while True:
2430
+ for st in y['sheets']:
2431
+ st['cells'] = dict(islice(st['cells'].items(), int(left_rate * len(st['cells']))))
2432
+ cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2433
+ if cur_summary_len <= summary_limit_len:
2434
+ return cur_summary_len
2435
+ if left_rate * total_cells_num < 1:
2436
+ break
2437
+ else: # 缩小保留比例,再试
2438
+ left_rate *= 0.8
2439
+
2440
+ return cur_summary_len
2441
+
2442
+ def reduce_step5(y, cur_summary_len):
2443
+ """ 计算平均每张表的长度,保留前面部分的表格 """
2444
+ n = len(y['sheets'])
2445
+ avg_sheet_len = cur_summary_len / n
2446
+ target_reduce_sheet_num = int((cur_summary_len - summary_limit_len) / avg_sheet_len + 0.5)
2447
+ y['sheets'] = y['sheets'][:n - target_reduce_sheet_num]
2448
+
2449
+ while y['sheets']:
2450
+ cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2451
+ if cur_summary_len <= summary_limit_len:
2452
+ return cur_summary_len
2453
+ y['sheets'] = y['sheets'][:-1] # 依次尝试删除最后一张表格的详细信息
2454
+
2455
+ def reduce_step_by_step(y):
2456
+ mode_tags = [
2457
+ 'Delete empty cell',
2458
+ 'Omit the longer content and replace it with...',
2459
+ 'Omit lines with the same structure',
2460
+ 'Omit later lines',
2461
+ 'Omit later sheets'
2462
+ ]
2463
+
2464
+ # 情况0:摘要本来就不大
2465
+ cur_summary_len = len(json.dumps(y, ensure_ascii=False))
2466
+ if cur_summary_len <= summary_limit_len:
2467
+ return y
2468
+
2469
+ # 情况1:删除空单元格
2470
+ cur_summary_len = reduce_step1(y)
2471
+ if cur_summary_len <= summary_limit_len:
2472
+ y['mode'] = ', '.join(mode_tags[:1])
2473
+ return y
2474
+
2475
+ # 情况2:单个单元格内容过长的,省略显示
2476
+ cur_summary_len = reduce_step2(y, cur_summary_len)
2477
+ if cur_summary_len <= summary_limit_len:
2478
+ y['mode'] = ', '.join(mode_tags[:2])
2479
+ return y
2480
+
2481
+ # 情况3(核心):同构数据,省略显示(有大量相同行数据,折叠省略表达)
2482
+ cur_summary_len = reduce_step3(y, cur_summary_len)
2483
+ if cur_summary_len <= summary_limit_len:
2484
+ y['mode'] = ', '.join(mode_tags[:3])
2485
+ return y
2486
+
2487
+ # 情况4:每张表都按比例删除后面部分的单元格
2488
+ cur_summary_len = reduce_step4(y, cur_summary_len)
2489
+ if cur_summary_len <= summary_limit_len:
2490
+ y['mode'] = ', '.join(mode_tags[:4])
2491
+ return y
2492
+
2493
+ # 情况5:从后往前删每张表格的详细信息
2494
+ reduce_step5(y, cur_summary_len)
2495
+ y['mode'] = ', '.join(mode_tags[:5])
2496
+ return y
2497
+
2498
+ x = summary2
2499
+ y = {
2500
+ 'fileName': x['fileName'],
2501
+ 'sheetNames': x['sheetNames'],
2502
+ 'sheets': x['sheets'],
2503
+ 'mode': 'Complete information', # 模式0是全量数据
2504
+ }
2505
+
2506
+ # 处理前确保下cells字段存在,避免后续很多处理过程要特判
2507
+ for st in y['sheets']:
2508
+ if 'cells' not in st:
2509
+ st['cells'] = {}
2510
+
2511
+ y = reduce_step_by_step(y)
2512
+
2513
+ # 但是最后结果还是去掉空cells
2514
+ for st in y['sheets']:
2515
+ if not st['cells']:
2516
+ del st['cells']
2517
+
2518
+ return y
2519
+
2520
+
2521
+ def extract_workbook_summary3(file_path, summary_limit_len=4000, **kwargs):
2522
+ """ 增加了全局ratio的计算 """
2523
+ data = extract_workbook_summary2plus(file_path, **kwargs)
2524
+ if not data:
2525
+ return data
2526
+ data = summary2summary3(data, summary_limit_len)
2527
+ return data
@@ -6,7 +6,13 @@
6
6
 
7
7
  """ pyxllib常用功能
8
8
  """
9
- import fire
9
+
10
+ try:
11
+ import fire
12
+ except:
13
+ # 除了模块找不到,在labelme场景可能还有AttributeError: 'NoneType' object has no attribute 'isatty'
14
+ # 遇到这种情况,都可以忽略
15
+ pass
10
16
 
11
17
  from pyxllib.file.packlib import *
12
18
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxllib
3
- Version: 0.3.86
3
+ Version: 0.3.87a0
4
4
  Summary: 厦门理工模式识别团队通用python代码工具库
5
5
  Home-page: https://github.com/XLPRUtils/pyxllib
6
6
  Author: code4101
@@ -442,7 +442,8 @@ class XlAiClient:
442
442
  """ 通用文字识别(高精度版): https://cloud.baidu.com/doc/OCR/s/1k3h7y3db """
443
443
  sz = 10 * 1024 ** 2
444
444
  buffer, ratio = self.adjust_image(image, max_length=8192, limit_b64buffer_size=sz, to_buffer=True)
445
- result_dict = self.run_aipocr_with_db(self._aipocr.basicAccurate, buffer, options, save_buffer_threshold_size=sz)
445
+ result_dict = self.run_aipocr_with_db(self._aipocr.basicAccurate, buffer, options,
446
+ save_buffer_threshold_size=sz)
446
447
  result_dict = ToLabelmeLike.list_word(result_dict, 1 / ratio, 'words_result', 'words_result_num')
447
448
  return result_dict
448
449
 
@@ -1113,6 +1114,8 @@ class XlAiClient:
1113
1114
  except requests.exceptions.Timeout:
1114
1115
  # 为了方便处理,统一也返回ConnectionError
1115
1116
  raise requests.exceptions.ConnectionError()
1117
+ except Exception:
1118
+ raise requests.exceptions.ConnectionError()
1116
1119
 
1117
1120
  if r.status_code == 200:
1118
1121
  res = json.loads(r.text)
@@ -32,7 +32,7 @@ import requests
32
32
  from tqdm import tqdm
33
33
 
34
34
  try:
35
- from transformers import GPT2TokenizerFast
35
+ from transformers import AutoTokenizer
36
36
  except ModuleNotFoundError:
37
37
  pass
38
38
 
@@ -54,13 +54,17 @@ class Tokenizer:
54
54
  def get_tokenizer(cls):
55
55
  """ 获取tokenizer,第一次调用时进行初始化 """
56
56
 
57
- if Tokenizer._tokenizer is None:
57
+ if cls._tokenizer is None:
58
58
  # 根本没必要每次都尝试连接官网,本地有就不要老是sb的尝试连接huggingface
59
59
  # 而且官网连接也不稳,这里换成我自己的服务器中转
60
- gpt2_dir = XlPath.tempdir() / 'huggingface_gpt2'
61
- ensure_localdir(gpt2_dir, 'https://xmutpriu.com/download/huggingface_gpt2.zip')
62
- Tokenizer._tokenizer = GPT2TokenizerFast.from_pretrained(gpt2_dir)
63
- return Tokenizer._tokenizer
60
+ # gpt2_dir = XlPath.tempdir() / 'huggingface_gpt2'
61
+ # ensure_localdir(gpt2_dir, 'https://xmutpriu.com/download/huggingface_gpt2.zip')
62
+ # Tokenizer._tokenizer = GPT2TokenizerFast.from_pretrained(gpt2_dir)
63
+ # 240103周三21:23,hx给过的新评测模型
64
+ gpt2_dir = XlPath.tempdir() / 'Atom-CL-SS'
65
+ ensure_localdir(gpt2_dir, 'https://xmutpriu.com/download/Atom-CL-SS.zip')
66
+ cls._tokenizer = AutoTokenizer.from_pretrained(gpt2_dir, trust_remote_code=True)
67
+ return cls._tokenizer
64
68
 
65
69
  @classmethod
66
70
  def tokenize(cls, paragraph, max_length=500):
@@ -73,7 +77,7 @@ class Tokenizer:
73
77
  >>> Tokenizer.tokenize('Hello, world! 汉字 123.14 35')
74
78
  ['Hello', ',', 'Ġworld', '!', 'Ġæ', '±', 'ī', 'åŃ', 'Ĺ', 'Ġ123', '.', '14', 'Ġ35']
75
79
  """
76
- tokenizer = Tokenizer.get_tokenizer()
80
+ tokenizer = cls.get_tokenizer()
77
81
 
78
82
  # 对段落进行切分
79
83
  paragraph_slices = [paragraph[i:i + max_length] for i in range(0, len(paragraph), max_length)]
@@ -30,7 +30,7 @@ _dir = Path(__file__).parent
30
30
 
31
31
  setup(
32
32
  name='pyxllib', # pip 安装时用的名字
33
- version='0.3.86', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
33
+ version='0.3.87a', # 当前版本,每次更新上传到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