2 次代码提交 15a5648c6e ... 2d4b63adfe

作者 SHA1 备注 提交日期
  bscheibel 2d4b63adfe cleaned up 5 年之前
  bscheibel 563c1cbd80 edi finished 5 年之前
共有 100 个文件被更改,包括 6492 次插入98 次删除
  1. 二进制
      __pycache__/clustering_precomputed_dbscan.cpython-37.pyc
  2. 二进制
      __pycache__/csv_to_text.cpython-37.pyc
  3. 二进制
      __pycache__/merge_pandas.cpython-37.pyc
  4. 二进制
      __pycache__/order_bounding_boxes_in_each_block.cpython-37.pyc
  5. 二进制
      __pycache__/organize_drawing_according_to_details_new.cpython-37.pyc
  6. 二进制
      __pycache__/read_from_clustered_merged.cpython-37.pyc
  7. 二进制
      __pycache__/regex_clean_new.cpython-37.pyc
  8. 1 18
      clustering_precomputed_dbscan.py
  9. 12 12
      main.py
  10. 2 2
      old/blob_dedection.py
  11. 3 3
      old/dbscan_clustering.py
  12. 1 1
      old/regex_extraction.py
  13. 91 0
      old/test.csv
  14. 1 16
      order_bounding_boxes_in_each_block.py
  15. 1 30
      organize_drawing_according_to_details_new.py
  16. 1 11
      read_from_clustered_merged.py
  17. 36 0
      read_iso_tables/foo-page-3-table-1.csv
  18. 15 0
      read_iso_tables/foo-page-3-table-2.csv
  19. 20 0
      read_iso_tables/foo-page-3-table-3.csv
  20. 67 0
      read_iso_tables/output_mit_camelot-page-3-table-1.csv
  21. 18 0
      read_iso_tables/output_mit_camelot-page-3-table-2.csv
  22. 32 0
      read_iso_tables/output_mit_camelot-page-3-table-3.csv
  23. 1 1
      read_iso_tables/pdf_table_extractor.py
  24. 2 2
      read_iso_tables/read_isos.py
  25. 2 2
      read_iso_tables/read_tables.py
  26. 330 0
      temporary/blub.csv
  27. 38 0
      temporary/ist_to_csv_with_corner_points.csv
  28. 331 0
      temporary/list_to_csv_with_corner_points.csv
  29. 320 0
      temporary/values_clusteredfrom_precomputed_dbscan.csv
  30. 10 0
      venv/bin/chardetect
  31. 10 0
      venv/bin/f2py
  32. 10 0
      venv/bin/f2py3
  33. 10 0
      venv/bin/f2py3.7
  34. 12 0
      venv/bin/tika-python
  35. 二进制
      venv/lib/python3.7/site-packages/__pycache__/pyparsing.cpython-37.pyc
  36. 二进制
      venv/lib/python3.7/site-packages/__pycache__/six.cpython-37.pyc
  37. 50 0
      venv/lib/python3.7/site-packages/certifi-2019.6.16.dist-info/DESCRIPTION.rst
  38. 1 0
      venv/lib/python3.7/site-packages/certifi-2019.6.16.dist-info/INSTALLER
  39. 21 0
      venv/lib/python3.7/site-packages/certifi-2019.6.16.dist-info/LICENSE.txt
  40. 74 0
      venv/lib/python3.7/site-packages/certifi-2019.6.16.dist-info/METADATA
  41. 15 0
      venv/lib/python3.7/site-packages/certifi-2019.6.16.dist-info/RECORD
  42. 6 0
      venv/lib/python3.7/site-packages/certifi-2019.6.16.dist-info/WHEEL
  43. 1 0
      venv/lib/python3.7/site-packages/certifi-2019.6.16.dist-info/metadata.json
  44. 1 0
      venv/lib/python3.7/site-packages/certifi-2019.6.16.dist-info/top_level.txt
  45. 3 0
      venv/lib/python3.7/site-packages/certifi/__init__.py
  46. 2 0
      venv/lib/python3.7/site-packages/certifi/__main__.py
  47. 二进制
      venv/lib/python3.7/site-packages/certifi/__pycache__/__init__.cpython-37.pyc
  48. 二进制
      venv/lib/python3.7/site-packages/certifi/__pycache__/__main__.cpython-37.pyc
  49. 二进制
      venv/lib/python3.7/site-packages/certifi/__pycache__/core.cpython-37.pyc
  50. 4618 0
      venv/lib/python3.7/site-packages/certifi/cacert.pem
  51. 15 0
      venv/lib/python3.7/site-packages/certifi/core.py
  52. 70 0
      venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/DESCRIPTION.rst
  53. 1 0
      venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/INSTALLER
  54. 96 0
      venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/METADATA
  55. 91 0
      venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/RECORD
  56. 6 0
      venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/WHEEL
  57. 3 0
      venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/entry_points.txt
  58. 1 0
      venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/metadata.json
  59. 1 0
      venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/top_level.txt
  60. 39 0
      venv/lib/python3.7/site-packages/chardet/__init__.py
  61. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/__init__.cpython-37.pyc
  62. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/big5freq.cpython-37.pyc
  63. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/big5prober.cpython-37.pyc
  64. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/chardistribution.cpython-37.pyc
  65. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/charsetgroupprober.cpython-37.pyc
  66. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/charsetprober.cpython-37.pyc
  67. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/codingstatemachine.cpython-37.pyc
  68. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/compat.cpython-37.pyc
  69. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/cp949prober.cpython-37.pyc
  70. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/enums.cpython-37.pyc
  71. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/escprober.cpython-37.pyc
  72. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/escsm.cpython-37.pyc
  73. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/eucjpprober.cpython-37.pyc
  74. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/euckrfreq.cpython-37.pyc
  75. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/euckrprober.cpython-37.pyc
  76. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/euctwfreq.cpython-37.pyc
  77. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/euctwprober.cpython-37.pyc
  78. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/gb2312freq.cpython-37.pyc
  79. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/gb2312prober.cpython-37.pyc
  80. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/hebrewprober.cpython-37.pyc
  81. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/jisfreq.cpython-37.pyc
  82. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/jpcntx.cpython-37.pyc
  83. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/langbulgarianmodel.cpython-37.pyc
  84. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/langcyrillicmodel.cpython-37.pyc
  85. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/langgreekmodel.cpython-37.pyc
  86. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/langhebrewmodel.cpython-37.pyc
  87. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/langhungarianmodel.cpython-37.pyc
  88. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/langthaimodel.cpython-37.pyc
  89. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/langturkishmodel.cpython-37.pyc
  90. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/latin1prober.cpython-37.pyc
  91. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/mbcharsetprober.cpython-37.pyc
  92. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/mbcsgroupprober.cpython-37.pyc
  93. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/mbcssm.cpython-37.pyc
  94. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/sbcharsetprober.cpython-37.pyc
  95. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/sbcsgroupprober.cpython-37.pyc
  96. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/sjisprober.cpython-37.pyc
  97. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/universaldetector.cpython-37.pyc
  98. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/utf8prober.cpython-37.pyc
  99. 二进制
      venv/lib/python3.7/site-packages/chardet/__pycache__/version.cpython-37.pyc
  100. 0 0
      venv/lib/python3.7/site-packages/chardet/big5freq.py

二进制
__pycache__/clustering_precomputed_dbscan.cpython-37.pyc


二进制
__pycache__/csv_to_text.cpython-37.pyc


二进制
__pycache__/merge_pandas.cpython-37.pyc


二进制
__pycache__/order_bounding_boxes_in_each_block.cpython-37.pyc


二进制
__pycache__/organize_drawing_according_to_details_new.cpython-37.pyc


二进制
__pycache__/read_from_clustered_merged.cpython-37.pyc


二进制
__pycache__/regex_clean_new.cpython-37.pyc


+ 1 - 18
clustering_precomputed_dbscan.py

@@ -12,20 +12,16 @@ def get_average_xy(list_input, path):
     wr.writerow(["element", "xmin","ymin","xmax","ymax", "ausrichtung","point_xmi_ymi","point_xma_ymi","point_xmi_yma","point_xma_yma"])
     wr.writerow(["element", "xmin","ymin","xmax","ymax", "ausrichtung","point_xmi_ymi","point_xma_ymi","point_xmi_yma","point_xma_yma"])
     result_df = pandas.DataFrame(columns=["point_xmi_ymi","point_xma_ymi","point_xmi_yma","point_xma_yma","ausrichtung"])
     result_df = pandas.DataFrame(columns=["point_xmi_ymi","point_xma_ymi","point_xmi_yma","point_xma_yma","ausrichtung"])
     for element in list_input:
     for element in list_input:
-        #print(len(element))
         xavg_elem = 0
         xavg_elem = 0
         yavg_elem = 0
         yavg_elem = 0
         ymin = 100000000
         ymin = 100000000
         ymax = 0
         ymax = 0
         xmin = 100000000
         xmin = 100000000
         xmax = 0
         xmax = 0
-        #print(element)
         newList = []
         newList = []
         check = False
         check = False
         if len(element) == 5 and not isinstance(element[0], list):
         if len(element) == 5 and not isinstance(element[0], list):
-            #print("bb")
             newList.append(element)
             newList.append(element)
-            #print(len(newList))
             element = newList
             element = newList
         """if len(element) != 5 and isinstance(element[0], list):
         """if len(element) != 5 and isinstance(element[0], list):
             for el in element:
             for el in element:
@@ -65,12 +61,9 @@ def get_average_xy(list_input, path):
         result_df.loc[len(result_df)]=[point_xmi_ymi,point_xma_ymi, point_xmi_yma, point_xma_yma,ausrichtung]
         result_df.loc[len(result_df)]=[point_xmi_ymi,point_xma_ymi, point_xmi_yma, point_xma_yma,ausrichtung]
 
 
     resultFile.close()
     resultFile.close()
-    #print(result_df)
     return result_df
     return result_df
 
 
 def intersects(rectangle1, rectangle2): #using the separating axis theorem, returns true if they intersect, otherwise false
 def intersects(rectangle1, rectangle2): #using the separating axis theorem, returns true if they intersect, otherwise false
-    #print(rectangle2[0])
-    #for rect in rectangle1:
 
 
     rect_1_min = eval(rectangle1[0])
     rect_1_min = eval(rectangle1[0])
     rect_1_max = eval(rectangle1[3])
     rect_1_max = eval(rectangle1[3])
@@ -92,28 +85,21 @@ def intersects(rectangle1, rectangle2): #using the separating axis theorem, retu
 def dist(rectangle1, rectangle2):
 def dist(rectangle1, rectangle2):
  #get minimal distance between two rectangles
  #get minimal distance between two rectangles
     distance = 100000000
     distance = 100000000
-    #print(rectangle1)
     for point1 in rectangle1[:4]:
     for point1 in rectangle1[:4]:
         point1 = eval(point1)
         point1 = eval(point1)
-        #print(point1)
         for point2 in rectangle2[:4]:
         for point2 in rectangle2[:4]:
-            #print(point2)
             point2 = eval(point2)
             point2 = eval(point2)
-            #dist1 = (float(point2[0]) - float(point1[0])) + ((float(point2[1]) - float(point1[1])))
             dist = sqrt(((float(point2[0]) - float(point1[0])))**2 + ((float(point2[1]) - float(point1[1])))**2)
             dist = sqrt(((float(point2[0]) - float(point1[0])))**2 + ((float(point2[1]) - float(point1[1])))**2)
-            #print(dist)
             if dist < distance:
             if dist < distance:
                 distance = dist
                 distance = dist
         if rectangle1[4] != rectangle2[4]:
         if rectangle1[4] != rectangle2[4]:
             distance = dist + 100
             distance = dist + 100
-        #print(intersects(rectangle1,rectangle2))
         if intersects(rectangle1, rectangle2):
         if intersects(rectangle1, rectangle2):
             distance = 0
             distance = 0
-            #print(rectangle1)
     return distance
     return distance
 
 
 def clustering(dm,eps,path):
 def clustering(dm,eps,path):
-    db = DBSCAN(eps=eps, min_samples=1, metric="precomputed").fit(dm)                                                                                        ##3.93 until now, bei 5 shon mehr erkannt, 7 noch mehr erkannt aber auch schon zu viel; GV12 ist 4.5 gut für LH zu wenig
+    db = DBSCAN(eps=eps, min_samples=1, metric="precomputed").fit(dm)
     labels = db.labels_
     labels = db.labels_
     n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
     n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
 
 
@@ -125,9 +111,6 @@ def clustering(dm,eps,path):
 
 
 def cluster_and_preprocess(result,eps,path):
 def cluster_and_preprocess(result,eps,path):
     result = get_average_xy(result, path) #input: array of arrays, output: either csv file or array of arrays
     result = get_average_xy(result, path) #input: array of arrays, output: either csv file or array of arrays
-
-    #data = pandas.read_csv("/home/bscheibel/PycharmProjects/dxf_reader/temporary/list_to_csv_with_corner_points.csv", sep=";")
-    #data = data[["point_xmi_ymi","point_xma_ymi","point_xmi_yma","point_xma_yma","ausrichtung"]]
     result.to_csv(path+"/temporary/blub.csv", sep=";", index=False, header=None)
     result.to_csv(path+"/temporary/blub.csv", sep=";", index=False, header=None)
     with open(path+"/temporary/blub.csv") as csvfile:
     with open(path+"/temporary/blub.csv") as csvfile:
         readCSV = csv.reader(csvfile, delimiter=';')
         readCSV = csv.reader(csvfile, delimiter=';')

+ 12 - 12
main.py

@@ -1,4 +1,3 @@
-import organize_drawing_according_to_details_new
 import order_bounding_boxes_in_each_block
 import order_bounding_boxes_in_each_block
 import clustering_precomputed_dbscan
 import clustering_precomputed_dbscan
 import read_from_clustered_merged
 import read_from_clustered_merged
@@ -9,7 +8,8 @@ import redis
 import sys
 import sys
 
 
 def write_redis(uuid, result, db_params):
 def write_redis(uuid, result, db_params):
-    db = redis.Redis(unix_socket_path='/tmp/redis.sock',db=7)
+    #db = redis.Redis(unix_socket_path='/tmp/redis.sock',db=7)
+    db = redis.Redis("localhost")
     db.set(uuid, result)
     db.set(uuid, result)
 
 
 
 
@@ -17,17 +17,19 @@ def main(uuid, filepath, db, eps):
     #db = redis.ConnectionPool(connection_class=redis.UnixDomainSocketConnection, path="/tmp/redis.sock")
     #db = redis.ConnectionPool(connection_class=redis.UnixDomainSocketConnection, path="/tmp/redis.sock")
 
 
     #db  = redis.Redis(unix_socket_path='/tmp/redis.sock')
     #db  = redis.Redis(unix_socket_path='/tmp/redis.sock')
-    path = "/home/centurio/Projects/engineering_drawings_extraction"
-    #path = "/home/bscheibel/PycharmProjects/dxf_reader"
+
+
+    #path = "/home/centurio/Projects/engineering_drawings_extraction"
+    path = "/home/bscheibel/PycharmProjects/engineering_drawings_extraction"
     filename = order_bounding_boxes_in_each_block.pdf_to_html(uuid, filepath, path)
     filename = order_bounding_boxes_in_each_block.pdf_to_html(uuid, filepath, path)
     #print(filename)
     #print(filename)
     result, number_blocks, number_words= order_bounding_boxes_in_each_block.get_bound_box(filename)  ##get coordinates+text out of html file into array of arrays
     result, number_blocks, number_words= order_bounding_boxes_in_each_block.get_bound_box(filename)  ##get coordinates+text out of html file into array of arrays
+    print("words:" + str(number_words),"blocks:" + str(number_blocks))
     if eps == '0':
     if eps == '0':
         if number_words > 500:
         if number_words > 500:
             eps = 7
             eps = 7
         else:
         else:
             eps = 1
             eps = 1
-    #print(eps)
     isos, general_tol = order_bounding_boxes_in_each_block.extract_isos(result)
     isos, general_tol = order_bounding_boxes_in_each_block.extract_isos(result)
     print(general_tol)
     print(general_tol)
     res = clustering_precomputed_dbscan.cluster_and_preprocess(result,eps, path)
     res = clustering_precomputed_dbscan.cluster_and_preprocess(result,eps, path)
@@ -35,7 +37,6 @@ def main(uuid, filepath, db, eps):
     tables = order_bounding_boxes_in_each_block.get_tables(clean_arrays)
     tables = order_bounding_boxes_in_each_block.get_tables(clean_arrays)
     pretty = regex_clean_new.print_clean(clean_arrays)
     pretty = regex_clean_new.print_clean(clean_arrays)
     res, details_dict = organize_drawing_according_to_details_new.main_function(pretty, tables)
     res, details_dict = organize_drawing_according_to_details_new.main_function(pretty, tables)
-    #print(res)
 
 
     json_isos = json.dumps(isos)
     json_isos = json.dumps(isos)
     json_result = json.dumps(res)
     json_result = json.dumps(res)
@@ -45,14 +46,13 @@ def main(uuid, filepath, db, eps):
     write_redis(uuid+"isos",json_isos, db)
     write_redis(uuid+"isos",json_isos, db)
     write_redis(uuid+"eps", str(number_blocks)+","+str(number_words), db)
     write_redis(uuid+"eps", str(number_blocks)+","+str(number_words), db)
     write_redis(uuid+"details",json_details ,db)
     write_redis(uuid+"details",json_details ,db)
-    #print(json_details)
-    #print(redis.Redis('localhost').get(uuid+"dims"))
-    #print(result)
 
 
-"""#if __name__ == "__main__":
+
+if __name__ == "__main__":
     uuid = sys.argv[1]
     uuid = sys.argv[1]
     filename = sys.argv[2]
     filename = sys.argv[2]
     db = sys.argv[3]
     db = sys.argv[3]
     eps = sys.argv[4]
     eps = sys.argv[4]
-    main(uuid,filename, db, eps)"""
-main("33333", "/home/centurio/Projects/engineering_drawings_extraction/drawings/5152166_Rev04.pdf", "'/tmp/redis.sock', db=7",3)
+    main(uuid,filename, db, eps)
+
+#main("33333", "/home/centurio/Projects/engineering_drawings_extraction/drawings/5152166_Rev04.pdf", "'/tmp/redis.sock', db=7",3)

+ 2 - 2
old/blob_dedection.py

@@ -1,5 +1,5 @@
 import text_to_image
 import text_to_image
-encoded_image_path = text_to_image.encode_file("/home/bscheibel/PycharmProjects/dxf_reader/drawings/5129275_Rev01-GV12.txt", "output_image.png")
+encoded_image_path = text_to_image.encode_file("/home/bscheibel/PycharmProjects/engineering_drawings_extraction/drawings/5129275_Rev01-GV12.txt", "output_image.png")
 
 
 import imgkit
 import imgkit
-imgkit.from_file('/home/bscheibel/PycharmProjects/dxf_reader/drawings/5129275_Rev01-GV12.html', 'out.jpg')
+imgkit.from_file('/home/bscheibel/PycharmProjects/engineering_drawings_extraction/drawings/5129275_Rev01-GV12.html', 'out.jpg')

+ 3 - 3
old/dbscan_clustering.py

@@ -15,7 +15,7 @@ def my_distance(x,y):
 
 
 def cluster(file_in, file_out):
 def cluster(file_in, file_out):
     # #############################################################################
     # #############################################################################
-    data_df = pandas.read_csv("/home/bscheibel/PycharmProjects/dxf_reader/temporary/list_to_csv_with_avg_points.csv", sep=";")
+    data_df = pandas.read_csv("/home/bscheibel/PycharmProjects/engineering_drawings_extraction/temporary/list_to_csv_with_avg_points.csv", sep=";")
     data_df.head(3)
     data_df.head(3)
     data = data_df[["xavg_elem","yavg_elem","ausrichtung"]]
     data = data_df[["xavg_elem","yavg_elem","ausrichtung"]]
     #print(data)
     #print(data)
@@ -113,8 +113,8 @@ def get_average_xy(list_input):
 
 
 
 
 #cluster(33,33)
 #cluster(33,33)
-file = "/home/bscheibel/PycharmProjects/dxf_reader/drawings/5152166_Rev04.html"
-#file = "/home/bscheibel/PycharmProjects/dxf_reader/drawings/5129275_Rev01-GV12.html"
+file = "/home/bscheibel/PycharmProjects/engineering_drawings_extraction/drawings/5152166_Rev04.html"
+#file = "/home/bscheibel/PycharmProjects/engineering_drawings_extraction/drawings/5129275_Rev01-GV12.html"
 #result = order_bounding_boxes_in_each_block.get_bound_box(file)
 #result = order_bounding_boxes_in_each_block.get_bound_box(file)
 #get_average_xy(result)
 #get_average_xy(result)
 cluster(33,33)
 cluster(33,33)

+ 1 - 1
old/regex_extraction.py

@@ -88,7 +88,7 @@ reg = r"(^\d{1}$)" #einzelne Zahlen raus #checked
 reg1 = r"(^[A-Z]{1}-?[A-Z]?$)" #einzelne Buchstaben raus #checked
 reg1 = r"(^[A-Z]{1}-?[A-Z]?$)" #einzelne Buchstaben raus #checked
 reg_all = re.compile(r"(ISO\s\d\d\d\d?\W?\d?\W?\d?\W?\d?|(EN\s\d*)|^[A-Z]{1}-?[A-Z]?\s*$)|([A-Z]\W?[A-Z]?\s?\W\s?\d\d?\s?\s?:\s?\d\d?\s?\W)|((?!\d)(?!Rpk)[a-zA-Z]{3,}?\W)|(?!0)(^\d{1}\s*$|A\d{1}|\d\s\d\s\d\s\d\s\d)|BY|to:?|of|or|is|in|as|be|by |\d\d\d\d\d\d\d|\d\s\/\s\d")
 reg_all = re.compile(r"(ISO\s\d\d\d\d?\W?\d?\W?\d?\W?\d?|(EN\s\d*)|^[A-Z]{1}-?[A-Z]?\s*$)|([A-Z]\W?[A-Z]?\s?\W\s?\d\d?\s?\s?:\s?\d\d?\s?\W)|((?!\d)(?!Rpk)[a-zA-Z]{3,}?\W)|(?!0)(^\d{1}\s*$|A\d{1}|\d\s\d\s\d\s\d\s\d)|BY|to:?|of|or|is|in|as|be|by |\d\d\d\d\d\d\d|\d\s\/\s\d")
 extracted_dimensions = []
 extracted_dimensions = []
-#text = csv_to_text.read_csv('/home/bscheibel/PycharmProjects/dxf_reader/temporary/text_merged_GV12.csv')
+#text = csv_to_text.read_csv('/home/bscheibel/PycharmProjects/engineering_drawings_extraction/temporary/text_merged_GV12.csv')
 
 
 #file = open('values_clusteredfromPDF_GV12.csv', 'r')
 #file = open('values_clusteredfromPDF_GV12.csv', 'r')
 #text = file.read()
 #text = file.read()

+ 91 - 0
old/test.csv

@@ -0,0 +1,91 @@
+LAYOUT;420;297
+Concepts, principales and rules according to:;0;2
+Dimensions according to:;0;-1
+Tolerances of form, orientation, location and run-out:;0;-3
+Edge finish according to:;0;-6
+Surface texture according to:;0;-9
+Limits according to:;0;-12
+16% rule:;0;-15
+ISO 8015;0;2
+ISO 14405 1-3;0;-1
+ISO 1101;0;-3
+ISO 13715;0;-6
+ISO 1302;0;-9
+ISO 286-2;0;-12
+not applicable;0;-15
+Rz 16;4;3
+2x;163;195
+%%c;163;199
+19,20;163;203
+-;163;210
+0,00;160;211
+0,05;163;211
+%%c;152;197
+15,15;152;200
++;149;208
+0,05;149;209
+0,00;152;209
+1,5;87;182
++;92;185
+0,1;93;185
+0,0;93;182
+4,8;86;170
+?0,05;91;170
+2;113;179
++;116;182
+0,1;117;182
+0,0;117;179
+9,3;112;170
++;117;173
+0,1;119;173
+0,0;119;170
+%%c;140;158
+4,5;140;161
++;137;167
++;140;167
+0,040;137;168
+0,028;140;168
+A;17;31
+A;202;31
+B;17;75
+B;202;75
+C;17;125
+C;202;125
+D;17;175
+D;202;175
+E;17;225
+E;202;225
+F;17;269
+F;202;269
+4;39;9
+4;39;291
+3;84;9
+3;84;291
+2;134;9
+2;134;291
+1;179;9
+1;179;291
+BEATE GV12;160;42
+GV_12;152;22
+A4;191;24
+Page 1/1;164;12
+Scale: 2:1;120;12
+Drawing nr.:;120;25
+Designation:;120;46
+Surface material/treatment:;21;47
+Material: 1.4021;20;64
+Surface Texture:;65;64
+Hardened to 48 HRC +2/-0;86;47
+Quality Standard: EN 10095;20;17
+A;130;108
+A;91;107
+2x %%c <>;165;225
+%%c<>;155;221
+<>;101;180
+<>;108;167
+<>;105;177
+<>;108;167
+%%c<>;143;210
+Layout1;0;0
+Layout2;0;0
+Model;0;0

+ 1 - 16
order_bounding_boxes_in_each_block.py

@@ -39,23 +39,14 @@ def get_bound_box(file):
         abstand_x = abs(float(element[-1][0])-(float(element[0][2])))
         abstand_x = abs(float(element[-1][0])-(float(element[0][2])))
         abstand_y = abs(float(element[-1][3])-float(element[0][1]))
         abstand_y = abs(float(element[-1][3])-float(element[0][1]))
         if later_bigger >= -5:
         if later_bigger >= -5:
-            #print(abstand_x-abstand_y)
             new_all_elements.append(element)
             new_all_elements.append(element)
         else:
         else:
             new_element = sorted(element, key=lambda k: [float(k[0])])
             new_element = sorted(element, key=lambda k: [float(k[0])])
             new_all_elements.append(new_element)
             new_all_elements.append(new_element)
-
-
-    """for element in new_all_elements:
-        for blub in element:
-            #print(blub[4])
-
-        #print("\n")"""
-
     return new_all_elements, number_blocks, number_words
     return new_all_elements, number_blocks, number_words
 
 
 def pdf_to_html(uuid,filepath, path):
 def pdf_to_html(uuid,filepath, path):
-    filename = path +"/temporary/" +str(uuid)+"out.html" #to app/temporary later
+    filename = path +"/temporary/" +str(uuid)+"out.html"
     subprocess.call(['pdftotext', '-bbox-layout',
     subprocess.call(['pdftotext', '-bbox-layout',
                      filepath, filename])
                      filepath, filename])
     return filename
     return filename
@@ -87,16 +78,10 @@ def get_tables(result):
     tables = []
     tables = []
     for element in result:
     for element in result:
         new = []
         new = []
-        #print(element)
         if re.search(reg, element):
         if re.search(reg, element):
             new.extend(result[element])
             new.extend(result[element])
             new.append(element)
             new.append(element)
             tables.append(new)
             tables.append(new)
     number = len(tables)
     number = len(tables)
-    #print(tables)
     return tables
     return tables
 
 
-
-#file="/home/bscheibel/PycharmProjects/dxf_reader/drawings/5152166_Rev04.html"
-#get_bound_box(file)
-#pdf_to_html("/home/bscheibel/PycharmProjects/dxf_reader/drawings/5129275_Rev01-GV12.pdf")

+ 1 - 30
organize_drawing_according_to_details_new.py

@@ -1,7 +1,4 @@
-import order_bounding_boxes_in_each_block
 import re
 import re
-import csv
-import clustering_precomputed_dbscan
 
 
 def get_details(result): #search for all details in drawing and store it in list details, first need to append all text elements of one line and then check if regular expression is found in this text element
 def get_details(result): #search for all details in drawing and store it in list details, first need to append all text elements of one line and then check if regular expression is found in this text element
     reg = r"([A-Z])-\1|([A-Z]\W?[A-Z]?\s?\W\s?\d\d?\s?\s?:\s?\d\d?\s?\W)"
     reg = r"([A-Z])-\1|([A-Z]\W?[A-Z]?\s?\W\s?\d\d?\s?\s?:\s?\d\d?\s?\W)"
@@ -43,23 +40,19 @@ def get_borders(details, tables):
             secondy_max = second[3]
             secondy_max = second[3]
 
 
             if secondx_max < firstx_min and abs(firsty_min-secondy_min) < 90 and first != second:  ###check for left side, are there any other details at the left side at a certain y-span
             if secondx_max < firstx_min and abs(firsty_min-secondy_min) < 90 and first != second:  ###check for left side, are there any other details at the left side at a certain y-span
-                #print(first,second)
                 if abs(firstx_min - secondx_max)/2 < distance_xmax:
                 if abs(firstx_min - secondx_max)/2 < distance_xmax:
                     distance_xmax = abs(firstx_min - secondx_max)/2
                     distance_xmax = abs(firstx_min - secondx_max)/2
                     x_min = secondx_max + distance_xmax
                     x_min = secondx_max + distance_xmax
             if secondx_min > firstx_max and abs(firsty_min-secondy_min) < 190 and first != second: ####check for right side
             if secondx_min > firstx_max and abs(firsty_min-secondy_min) < 190 and first != second: ####check for right side
                 if abs(secondx_min - firstx_max)/2 < distance_xmin:
                 if abs(secondx_min - firstx_max)/2 < distance_xmin:
-                    #print(first, second)
                     distance_xmin = abs(secondx_min - firstx_max)/2
                     distance_xmin = abs(secondx_min - firstx_max)/2
                     x_max = firstx_max + distance_xmin
                     x_max = firstx_max + distance_xmin
             if firsty_min > secondy_max and abs(firstx_min-secondx_min) < 80 and first != second: ####check above
             if firsty_min > secondy_max and abs(firstx_min-secondx_min) < 80 and first != second: ####check above
                 if abs(firsty_min - secondy_max)/2 < distance_ymin:
                 if abs(firsty_min - secondy_max)/2 < distance_ymin:
-                    #print(first, second)
                     distance_ymin = abs(firsty_min - secondy_max)/2
                     distance_ymin = abs(firsty_min - secondy_max)/2
                     y_min = firsty_min
                     y_min = firsty_min
             if firsty_max < secondy_min and abs(firstx_min-secondx_min) < 80 and first != second: ####check below
             if firsty_max < secondy_min and abs(firstx_min-secondx_min) < 80 and first != second: ####check below
                 if abs(firsty_max - secondy_min)/2 < distance_ymax:
                 if abs(firsty_max - secondy_min)/2 < distance_ymax:
-                    #print(first, second)
                     distance_ymax = abs(firsty_max - secondy_min)/2
                     distance_ymax = abs(firsty_max - secondy_min)/2
                     y_max = secondy_min
                     y_max = secondy_min
 
 
@@ -76,20 +69,16 @@ def get_borders(details, tables):
 
 
         ##check if it intersects with tables
         ##check if it intersects with tables
         for table in tables:
         for table in tables:
-            #print(table)
             table_xmin = table[0]
             table_xmin = table[0]
             if "Start drawing" in table[4]:
             if "Start drawing" in table[4]:
                 table_xmax = 100000000
                 table_xmax = 100000000
             else:
             else:
                 table_xmax = table[2]
                 table_xmax = table[2]
             table_ymin = table[1]
             table_ymin = table[1]
-            #table_ymax = table[3]
             if y_max > table_ymin:
             if y_max > table_ymin:
                 if firstx_min > table_xmin and firstx_min < table_xmax:
                 if firstx_min > table_xmin and firstx_min < table_xmax:
-                    #print("blub",first,table, table_xmax)
                     y_max = table_ymin
                     y_max = table_ymin
                 elif x_max > table_xmin and x_max < table_xmax:
                 elif x_max > table_xmin and x_max < table_xmax:
-                    #print(first,table)
                     y_max = table_ymin
                     y_max = table_ymin
 
 
         sections.append((first,x_min, y_min,x_max,y_max))
         sections.append((first,x_min, y_min,x_max,y_max))
@@ -99,8 +88,6 @@ def get_borders(details, tables):
     return sections
     return sections
 
 
 def intersects(detail, rectangle): #using the separating axis theorem
 def intersects(detail, rectangle): #using the separating axis theorem
-    #print(detail)
-
 
 
     rect1_bottom_left_x = float(detail[1][0])
     rect1_bottom_left_x = float(detail[1][0])
     rect1_top_right_x = float(detail[1][2])
     rect1_top_right_x = float(detail[1][2])
@@ -119,13 +106,10 @@ def intersects(detail, rectangle): #using the separating axis theorem
 def main_function(result, tables):
 def main_function(result, tables):
     reg = r"([A-Z])-\1|([A-Z]\W?[A-Z]?\s?\W\s?\d\d?\s?\s?:\s?\d\d?\s?\W)"
     reg = r"([A-Z])-\1|([A-Z]\W?[A-Z]?\s?\W\s?\d\d?\s?\s?:\s?\d\d?\s?\W)"
     details, number = get_details(result)
     details, number = get_details(result)
-    #details.extend(tables)
-    #print(tables)
-    #print(details)
+
     details = sorted(details, key=lambda x: x[0]) #sort by distance from 0,0
     details = sorted(details, key=lambda x: x[0]) #sort by distance from 0,0
     sections = get_borders(details, tables)
     sections = get_borders(details, tables)
 
 
-    #sections.append(tables)
     section = []
     section = []
     details_dict = {}
     details_dict = {}
 
 
@@ -136,7 +120,6 @@ def main_function(result, tables):
             coord.append(sec)
             coord.append(sec)
         details_dict[coord_name] = coord
         details_dict[coord_name] = coord
         section.append(list((coord_name,coord)))
         section.append(list((coord_name,coord)))
-    #print(section)
     for table in tables:
     for table in tables:
         table[3] = 10000000
         table[3] = 10000000
         coord = []
         coord = []
@@ -145,7 +128,6 @@ def main_function(result, tables):
             coord.append(tab)
             coord.append(tab)
         details_dict[name] = coord
         details_dict[name] = coord
         section.append(list((name,coord)))
         section.append(list((name,coord)))
-    #print(section)
 
 
     if number == 0 | len(section) == 0:
     if number == 0 | len(section) == 0:
             section.append(list(("No details",list((000.000,000.000,100000000.000,10000000.000)))))
             section.append(list(("No details",list((000.000,000.000,100000000.000,10000000.000)))))
@@ -154,29 +136,18 @@ def main_function(result, tables):
     dict = {}
     dict = {}
 
 
     for res in result:
     for res in result:
-        #print(res)
         for det in section:
         for det in section:
-            help_array = []
             help_dict = {}
             help_dict = {}
-            #print(det)
             if re.match(reg, res): ###damit nicht details zu details zugeordnet werden!!!
             if re.match(reg, res): ###damit nicht details zu details zugeordnet werden!!!
                 break
                 break
             if intersects(det,result[res]):
             if intersects(det,result[res]):
                 name = det[0]
                 name = det[0]
-                #help_array.append(res)
-                #help_array.extend(result[res])
                 help_dict[res] = result[res]
                 help_dict[res] = result[res]
-                #print(name)
                 if name in dict:
                 if name in dict:
                     dict[name].update(help_dict)
                     dict[name].update(help_dict)
                 else:
                 else:
                     dict[name] = help_dict
                     dict[name] = help_dict
                 break
                 break
 
 
-    """for dic in dict:
-        print(dic)
-        for d in dict[dic]:
-            print(d)"""
-
     return dict, details_dict
     return dict, details_dict
 
 

+ 1 - 11
read_from_clustered_merged.py

@@ -23,8 +23,6 @@ def read(file):
 
 
             for elem in row3:
             for elem in row3:
 
 
-                #print("start")
-                #print(len(elem))
                 if len(row3) == 1:
                 if len(row3) == 1:
                     element = elem[4]
                     element = elem[4]
                     xmin = float(elem[0])
                     xmin = float(elem[0])
@@ -37,20 +35,14 @@ def read(file):
                     if isinstance(elem[0],list):
                     if isinstance(elem[0],list):
                         merged_elements += elem
                         merged_elements += elem
 
 
-                        #print(length, len(merged_elements))
-                        if len(merged_elements) < length:   ####woher weiß ich die länge????
-                            #print("bb", len(merged_elements), len(elem))
+                        if len(merged_elements) < length:
                             continue
                             continue
 
 
                         if int(ausrichtung) == 1:
                         if int(ausrichtung) == 1:
-                            #print(elem)
                             merged_elements = sorted(merged_elements, key=lambda k: [float(k[3])], reverse=True)
                             merged_elements = sorted(merged_elements, key=lambda k: [float(k[3])], reverse=True)
 
 
-                        #print(merged_elements)
 
 
                         for elemt in merged_elements:
                         for elemt in merged_elements:
-                            #print(merged_elements)
-                            #print(elem)
                             element += elemt[4] + " "
                             element += elemt[4] + " "
                             if float(elemt[0]) < xmin:
                             if float(elemt[0]) < xmin:
                                 xmin = float(elemt[0])
                                 xmin = float(elemt[0])
@@ -73,13 +65,11 @@ def read(file):
                         if float(elem[3]) > ymax:
                         if float(elem[3]) > ymax:
                             ymax = float(elem[3])
                             ymax = float(elem[3])
 
 
-            #print(element)
             result.append(element)
             result.append(element)
             coords.append(xmin)
             coords.append(xmin)
             coords.append(ymin)
             coords.append(ymin)
             coords.append(xmax)
             coords.append(xmax)
             coords.append(ymax)
             coords.append(ymax)
             dict[element] = coords
             dict[element] = coords
-            #print("\n")
 
 
     return dict
     return dict

+ 36 - 0
read_iso_tables/foo-page-3-table-1.csv

@@ -0,0 +1,36 @@
+"Toleran
+Kurzzeichen","zklasse
+Benennung","von 0,5^)
+bis 3
+o
+o","über 3
+bis 6
+CO","Grenzal
+über 6
+bis 30","bmaße für 1
+über 30
+bis 120","Nennmaßb
+über 120
+bis 400","ereiche
+über 400
+bis 1000","über 1000
+bis 2000","über 2000
+bis 4000"
+"f","fein","CO
+±0,05
++1
++1","±0,05","±0,1","±0,15","±0,2","±0,3","±0,5","—"
+"m","mittel","±0,1","±0,1","±0,2","±0,3","±0,5","±0,8","± 1,2","±2"
+"c","grob","±0,2","±0,3","±0,5","±0,8","±1,2","±2","±3","±4"
+"V
+±4
+±6
+±2,5
+±8
+sehr grob
+—
+±0,5
+±1
+±1,5","","","","","","","","",""
+"^) Für Nennmaße unter 0,5 mm sind die Grenzabmaße direkt an dem (den) entsprechenden Nennmaß(en) anzugeben.","","","","","","","","",""

+ 15 - 0
read_iso_tables/foo-page-3-table-2.csv

@@ -0,0 +1,15 @@
+"Toleran
+Kurzzeichen","zklasse
+Benennung","Grei
+von 0,5^) bis 3
+±0,2","izabmaße für Nennmaßbere
+über 3 bis 6
+±0,5","iche
+über 6
+± 1"
+"f","fein","","",""
+"m","mittel","±0,4","± 1","±2"
+"c","grob","","",""
+"V
+sehr grob","","","",""
+"^) Für Nennmaße unter 0,5 mm sind die Grenzabmaße direkt an dem (den) entsprechenden Nennmaß(en) anzugeben.","","","",""

+ 20 - 0
read_iso_tables/foo-page-3-table-3.csv

@@ -0,0 +1,20 @@
+"Toleran
+Kurzzeichen","zklasse
+Benennung","bis 10","Grenzabmaße fC
+kürzeren Sch(
+über 10
+bis 50","ir Längenbereichi
+3nkel des betreffe
+über 50
+bis 120","e, in mm, für den
+>nden Winkels
+über 120
+bis 400","über 400"
+"f","fein","± 1°","± 0° 30'","","±0° 10'","±0°5'"
+"m","mittel","","","","",""
+"c","grob","","± 1°","± 0° 30'","±0° 15'","±0° 10'"
+"V
+±2°
+±1°
+±0° 20'
+sehr grob","","","","","",""

+ 67 - 0
read_iso_tables/output_mit_camelot-page-3-table-1.csv

@@ -0,0 +1,67 @@
+"Toleran
+zklasse
+Benennung
+Kurzzeichen","","Nennmaßb
+ereiche
+Grenzal
+bmaße für 1
+über 1000
+von 0,5^)
+über 120
+über 400
+über 3
+über 6
+über 30
+über 2000
+bis 6
+bis 2000
+bis 3
+bis 400
+bis 1000
+bis 4000
+bis 30
+bis 120
+CO
+o
+o","","","","","","",""
+"f
+fein","","CO
+±0,3
+±0,5
+±0,05
+±0,2
+—
+±0,05
+±0,1
+±0,15
++1
++1","","","","","","",""
+"m
+mittel","","±0,8
+±2
+±0,1
+±0,2
+±0,5
+±0,1
+±0,3
+± 1,2","","","","","","",""
+"c
+grob","","±3
+±1,2
+±2
+±4
+±0,2
+±0,3
+±0,5
+±0,8","","","","","","",""
+"V
+sehr grob","","±4
+±6
+±2,5
+±8
+—
+±0,5
+±1
+±1,5","","","","","","",""
+"^) Für Nennmaße unter 0,5 mm sind die Grenzabmaße direkt an dem (den) entsprechenden Nennmaß(en) anzugeben.","","","","","","","","",""

+ 18 - 0
read_iso_tables/output_mit_camelot-page-3-table-2.csv

@@ -0,0 +1,18 @@
+"Toleran
+zklasse
+Benennung
+Kurzzeichen","","iche
+Grei
+izabmaße für Nennmaßbere
+über 6
+von 0,5^) bis 3
+über 3 bis 6","",""
+"f
+fein","","±0,2","±0,5","± 1"
+"m
+mittel","","","",""
+"c
+grob","","±0,4","± 1","±2"
+"V
+sehr grob","","","",""
+"^) Für Nennmaße unter 0,5 mm sind die Grenzabmaße direkt an dem (den) entsprechenden Nennmaß(en) anzugeben.","","","",""

+ 32 - 0
read_iso_tables/output_mit_camelot-page-3-table-3.csv

@@ -0,0 +1,32 @@
+"Toleran
+zklasse
+Benennung
+Kurzzeichen","","ir Längenbereichi
+e, in mm, für den
+Grenzabmaße fC
+>nden Winkels
+kürzeren Sch(
+3nkel des betreffe
+bis 10
+über 120
+über 400
+über 10
+über 50
+bis 50
+bis 400
+bis 120","","","",""
+"fein
+f","","± 1°
+± 0° 30'
+±0° 10'","","","","±0°5'"
+"m
+mittel","","","","","",""
+"c
+grob","","±0° 10'
+± 1°
+± 0° 30'
+±0° 15'","","","",""
+"V
+sehr grob","","±2°
+±1°
+±0° 20'","","","",""

+ 1 - 1
read_iso_tables/pdf_table_extractor.py

@@ -1,6 +1,6 @@
 import camelot
 import camelot
 import matplotlib.pyplot as plt
 import matplotlib.pyplot as plt
-tables = camelot.read_pdf('/home/bscheibel/PycharmProjects/dxf_reader/iso_documents/ISO2768-1.PDF', pages="3",line_scale=70, line_tol=2, joint_tol=35)
+tables = camelot.read_pdf('/home/bscheibel/PycharmProjects/engineering_drawings_extraction/iso_documents/ISO2768-1.PDF', pages="3",line_scale=70, line_tol=2, joint_tol=35)
 tables.export('foo.csv', f='csv')
 tables.export('foo.csv', f='csv')
 print(tables[0].df)
 print(tables[0].df)
 camelot.plot(tables[0], kind='grid')
 camelot.plot(tables[0], kind='grid')

+ 2 - 2
read_iso_tables/read_isos.py

@@ -2,7 +2,7 @@ import nltk
 import re
 import re
 from tika import parser
 from tika import parser
 einleitung = False
 einleitung = False
-raw = parser.from_file('/home/bscheibel/PycharmProjects/dxf_reader/iso_documents/ISO2768-1.PDF')
+raw = parser.from_file('/home/bscheibel/PycharmProjects/engineering_drawings_extraction/iso_documents/ISO2768-1.PDF')
 #raw = parser.from_file('iso_documents/ISO286-2.PDF')
 #raw = parser.from_file('iso_documents/ISO286-2.PDF')
 print(raw['content'])
 print(raw['content'])
 #text = raw['content']
 #text = raw['content']
@@ -19,7 +19,7 @@ print(raw['content'])
 
 
 import subprocess
 import subprocess
 #subprocess.check_output(['ls','-l']) #all that is technically needed...
 #subprocess.check_output(['ls','-l']) #all that is technically needed...
-cmd = 'pdftotext -layout "/home/bscheibel/PycharmProjects/dxf_reader/iso_documents/ISO8015.PDF"'
+cmd = 'pdftotext -layout "/home/bscheibel/PycharmProjects/engineering_drawings_extraction/iso_documents/ISO8015.PDF"'
 print(subprocess.Popen(cmd, shell=True))
 print(subprocess.Popen(cmd, shell=True))
 
 
 #convert iso document to text
 #convert iso document to text

+ 2 - 2
read_iso_tables/read_tables.py

@@ -23,10 +23,10 @@ def file_read(fname):
 
 
 
 
 #file_read('drawings/5129275_Rev01-GV12.txt')
 #file_read('drawings/5129275_Rev01-GV12.txt')
-tables = camelot.read_pdf("/home/bscheibel/PycharmProjects/dxf_reader/iso_documents/ISO2768-1.PDF", pages="3")
+tables = camelot.read_pdf("/home/bscheibel/PycharmProjects/engineering_drawings_extraction/iso_documents/ISO2768-1.PDF", pages="3")
 tables.export('output_mit_camelot.csv', f='csv')
 tables.export('output_mit_camelot.csv', f='csv')
 
 
-output = subprocess.check_output(["less","/home/bscheibel/PycharmProjects/dxf_reader/iso_documents/ISO2768-1.PDF"])
+output = subprocess.check_output(["less","/home/bscheibel/PycharmProjects/engineering_drawings_extraction/iso_documents/ISO2768-1.PDF"])
 print(output)
 print(output)
 
 
 re_data_prefix = re.compile("^[0-9]+[.].*$")
 re_data_prefix = re.compile("^[0-9]+[.].*$")

+ 330 - 0
temporary/blub.csv

@@ -0,0 +1,330 @@
+[187.180925, 815.746851];[213.724746, 815.746851];[187.180925, 833.267817];[213.724746, 833.267817];3
+[217.300913, 816.360079];[244.143154, 816.360079];[217.300913, 835.440719];[244.143154, 835.440719];3
+[248.020901, 815.746851];[326.284694, 815.746851];[248.020901, 833.267817];[326.284694, 833.267817];3
+[1111.191445, 494.016255];[1124.007599, 494.016255];[1111.191445, 521.039792];[1124.007599, 521.039792];1
+[857.632547, 546.096232];[870.4487, 546.096232];[857.632547, 569.279772];[870.4487, 569.279772];1
+[832.072557, 519.30596];[844.888711, 519.30596];[832.072557, 570.839772];[844.888711, 570.839772];1
+[977.620609, 769.211228];[1000.804027, 769.211228];[977.620609, 782.027838];[1000.804027, 782.027838];3
+[591.940763, 812.619667];[677.33106, 812.619667];[591.940763, 831.815352];[677.33106, 831.815352];3
+[967.300113, 797.508989];[1032.901811, 797.508989];[967.300113, 812.147826];[1032.901811, 812.147826];3
+[769.540692, 816.46685];[851.142478, 816.46685];[769.540692, 833.855725];[851.142478, 833.855725];3
+[655.420738, 835.066843];[721.049117, 835.066843];[655.420738, 853.935153];[721.049117, 853.935153];3
+[745.300702, 835.634036];[751.889104, 835.634036];[745.300702, 853.935153];[751.889104, 853.935153];1
+[719.740712, 836.280071];[745.382909, 836.280071];[719.740712, 855.120711];[745.382909, 855.120711];3
+[1563.832702, 193.366806];[1581.806998, 193.366806];[1563.832702, 213.119915];[1581.806998, 213.119915];3
+[1418.610908, 294.223619];[1441.16683, 294.223619];[1418.610908, 310.919876];[1441.16683, 310.919876];3
+[1451.610894, 284.771268];[1474.166716, 284.771268];[1451.610894, 310.319876];[1474.166716, 310.319876];3
+[1532.270923, 352.755985];[1545.087533, 352.755985];[1532.270923, 397.319841];[1545.087533, 397.319841];1
+[1657.540637, 377.651385];[1667.544521, 377.651385];[1657.540637, 390.467994];[1667.544521, 390.467994];3
+[1513.659395, 496.451337];[1577.643206, 496.451337];[1513.659395, 509.267947];[1577.643206, 509.267947];3
+[1295.620462, 613.779747];[1336.738707, 613.779747];[1295.620462, 659.135421];[1336.738707, 659.135421];3
+[1260.580303, 614.619746];[1273.259539, 614.619746];[1260.580303, 633.815431];[1273.259539, 633.815431];1
+[1275.09949, 761.989003];[1314.661698, 761.989003];[1275.09949, 776.74784];[1314.661698, 776.74784];3
+[1409.379436, 651.586916];[1485.023195, 651.586916];[1409.379436, 686.627876];[1485.023195, 686.627876];3
+[1657.900637, 661.091271];[1667.142452, 661.091271];[1657.900637, 673.907881];[1667.142452, 673.907881];3
+[1380.099448, 768.70687];[1450.703209, 768.70687];[1380.099448, 786.347836];[1450.703209, 786.347836];3
+[1658.260637, 802.811214];[1666.726527, 802.811214];[1658.260637, 815.627824];[1666.726527, 815.627824];1
+[978.460609, 826.811205];[1019.882984, 826.811205];[978.460609, 839.627815];[1019.882984, 839.627815];3
+[769.540692, 839.0512];[855.724489, 839.0512];[769.540692, 851.86781];[855.724489, 851.86781];3
+[1657.540637, 519.371328];[1667.544521, 519.371328];[1657.540637, 532.187938];[1667.544521, 532.187938];3
+[1380.099448, 729.106885];[1441.421242, 729.106885];[1380.099448, 764.027845];[1441.421242, 764.027845];3
+[1185.099526, 732.469015];[1227.901758, 732.469015];[1185.099526, 746.267852];[1227.901758, 746.267852];3
+[986.860605, 735.586883];[1013.404455, 735.586883];[986.860605, 753.107849];[1013.404455, 753.107849];3
+[769.540692, 799.331216];[784.148564, 799.331216];[769.540692, 812.147826];[784.148564, 812.147826];3
+[578.860768, 857.411193];[586.56459, 857.411193];[578.860768, 870.227803];[586.56459, 870.227803];1
+[1592.619358, 266.534156];[1598.21495, 266.534156];[1592.619358, 279.347249];[1598.21495, 279.347249];1
+[1186.059526, 704.629026];[1228.861757, 704.629026];[1186.059526, 718.427863];[1228.861757, 718.427863];3
+[947.860621, 708.219709];[961.701948, 708.219709];[947.860621, 727.415394];[961.701948, 727.415394];3
+[775.66069, 748.811236];[784.902505, 748.811236];[775.66069, 761.627846];[784.902505, 761.627846];3
+[475.42081, 787.186862];[567.02468, 787.186862];[475.42081, 804.575736];[567.02468, 804.575736];3
+[472.900811, 807.346854];[532.084584, 807.346854];[472.900811, 842.267814];[532.084584, 842.267814];3
+[1657.900637, 235.931441];[1667.142452, 235.931441];[1657.900637, 248.748051];[1667.142452, 248.748051];3
+[1392.939443, 468.251348];[1402.181258, 468.251348];[1392.939443, 481.067958];[1402.181258, 481.067958];3
+[1296.339481, 507.699789];[1310.180808, 507.699789];[1296.339481, 526.895474];[1310.180808, 526.895474];3
+[1210.311051, 758.495881];[1223.127661, 758.495881];[1210.311051, 799.31968];[1223.127661, 799.31968];1
+[472.900811, 759.946873];[532.084584, 759.946873];[472.900811, 777.335747];[532.084584, 777.335747];3
+[179.020928, 781.066865];[354.702677, 781.066865];[179.020928, 801.360733];[354.702677, 801.360733];3
+[771.100692, 705.946895];[817.564493, 705.946895];[771.100692, 723.587861];[817.564493, 723.587861];3
+[729.820708, 717.851248];[745.204504, 717.851248];[729.820708, 730.667858];[745.204504, 730.667858];3
+[475.42081, 739.786881];[553.104666, 739.786881];[475.42081, 757.175755];[553.104666, 757.175755];3
+[1620.699352, 247.680578];[1631.29553, 247.680578];[1620.699352, 262.080869];[1631.29553, 262.080869];3
+[1435.648734, 401.91759];[1450.527468, 401.91759];[1435.648734, 433.199827];[1450.527468, 433.199827];1
+[1268.859492, 438.819817];[1290.249016, 438.819817];[1268.859492, 487.77549];[1290.249016, 487.77549];1
+[1142.859506, 455.292437];[1185.925189, 455.292437];[1142.859506, 475.42765];[1185.925189, 475.42765];3
+[1111.191445, 613.776202];[1124.007599, 613.776202];[1111.191445, 648.479741];[1124.007599, 648.479741];1
+[729.700705, 700.179712];[743.542031, 700.179712];[729.700705, 719.375397];[743.542031, 719.375397];3
+[637.660745, 717.851248];[653.044541, 717.851248];[637.660745, 730.667858];[653.044541, 730.667858];3
+[698.99261, 733.416162];[711.808764, 733.416162];[698.99261, 774.23969];[711.808764, 774.23969];1
+[223.540911, 733.906883];[347.920337, 733.906883];[223.540911, 754.080751];[347.920337, 754.080751];3
+[1613.979354, 238.909222];[1620.597104, 238.909222];[1613.979354, 251.31131];[1620.597104, 251.31131];1
+[1409.393554, 314.331737];[1432.64683, 314.331737];[1409.393554, 338.399865];[1432.64683, 338.399865];3
+[1130.379548, 379.931384];[1189.683258, 379.931384];[1130.379548, 392.747994];[1189.683258, 392.747994];3
+[804.712568, 433.17628];[817.528721, 433.17628];[804.712568, 460.199816];[817.528721, 460.199816];1
+[752.380677, 581.53152];[786.388708, 581.53152];[752.380677, 603.947852];[786.388708, 603.947852];3
+[484.900806, 707.411253];[518.764594, 707.411253];[484.900806, 720.227863];[518.764594, 720.227863];3
+[1585.179366, 259.574162];[1592.445584, 259.574162];[1585.179366, 272.387255];[1592.445584, 272.387255];1
+[1599.93936, 229.571512];[1611.892307, 229.571512];[1599.93936, 247.188037];[1611.892307, 247.188037];3
+[1628.979348, 194.293396];[1642.179151, 194.293396];[1628.979348, 213.707502];[1642.179151, 213.707502];3
+[734.860706, 864.37119];[775.684505, 864.37119];[734.860706, 877.1878];[775.684505, 877.1878];3
+[1367.631343, 829.176104];[1380.447496, 829.176104];[1367.631343, 869.999652];[1380.447496, 869.999652];1
+[45.581282, 802.811214];[54.047172, 802.811214];[45.581282, 815.627824];[54.047172, 815.627824];1
+[750.820743, 501.133133];[785.536881, 501.133133];[750.820743, 552.587362];[785.536881, 552.587362];3
+[804.689986, 535.717562];[819.328721, 535.717562];[804.689986, 601.319759];[819.328721, 601.319759];1
+[502.672689, 417.816289];[515.488842, 417.816289];[502.672689, 433.199827];[515.488842, 433.199827];3
+[180.820928, 729.491244];[220.924745, 729.491244];[180.820928, 742.307854];[220.924745, 742.307854];3
+[434.980826, 679.211264];[445.804646, 679.211264];[434.980826, 707.747868];[445.804646, 707.747868];1
+[337.540432, 705.21971];[351.381759, 705.21971];[337.540432, 724.415395];[351.381759, 724.415395];3
+[261.820895, 707.411253];[295.684713, 707.411253];[261.820895, 720.227863];[295.684713, 720.227863];3
+[87.701265, 799.691216];[97.705149, 799.691216];[87.701265, 812.507826];[97.705149, 812.507826];3
+[404.740838, 536.171321];[420.124663, 536.171321];[404.740838, 548.987931];[420.124663, 548.987931];3
+[1571.859407, 246.974197];[1582.53141, 246.974197];[1571.859407, 265.067288];[1582.53141, 265.067288];1
+[1419.579432, 354.219851];[1528.12988, 354.219851];[1419.579432, 373.415535];[1528.12988, 373.415535];3
+[1276.17949, 367.059845];[1310.780751, 367.059845];[1276.17949, 386.25553];[1310.780751, 386.25553];3
+[437.500825, 652.331275];[444.428722, 652.331275];[437.500825, 665.147885];[444.428722, 665.147885];1
+[162.820935, 662.531271];[203.644764, 662.531271];[162.820935, 675.34788];[203.644764, 675.34788];3
+[138.580945, 776.771225];[178.684762, 776.771225];[138.580945, 789.587835];[178.684762, 789.587835];3
+[1130.379548, 357.347034];[1226.663298, 357.347034];[1130.379548, 374.735908];[1226.663298, 374.735908];3
+[947.860621, 369.099845];[961.701948, 369.099845];[947.860621, 388.295529];[961.701948, 388.295529];3
+[726.940709, 370.779844];[740.782036, 370.779844];[726.940709, 389.975529];[740.782036, 389.975529];3
+[671.992621, 738.57614];[684.808775, 738.57614];[671.992621, 779.399688];[684.808775, 779.399688];1
+[76.781269, 671.506908];[146.664829, 671.506908];[76.781269, 706.547868];[146.664829, 706.547868];3
+[355.420858, 536.171321];[370.804683, 536.171321];[355.420858, 548.987931];[370.804683, 548.987931];3
+[233.621312, 585.517542];[252.581952, 585.517542];[233.621312, 642.479743];[252.581952, 642.479743];1
+[158.632472, 521.975989];[171.449082, 521.975989];[158.632472, 537.359785];[171.449082, 537.359785];3
+[158.632472, 599.855958];[171.449082, 599.855958];[158.632472, 615.359754];[171.449082, 615.359754];3
+[77.021169, 649.186917];[146.26276, 649.186917];[77.021169, 666.827884];[146.26276, 666.827884];3
+[45.221282, 661.091271];[54.463097, 661.091271];[45.221282, 673.907881];[54.463097, 673.907881];3
+[312.700875, 371.739844];[328.845631, 371.739844];[312.700875, 390.935528];[328.845631, 390.935528];3
+[237.34131, 497.077577];[256.181951, 497.077577];[237.34131, 546.359781];[256.181951, 546.359781];1
+[82.421267, 506.411333];[123.245081, 506.411333];[82.421267, 519.227943];[123.245081, 519.227943];3
+[44.741282, 519.371328];[54.745166, 519.371328];[44.741282, 532.187938];[54.745166, 532.187938];3
+[490.180804, 362.867032];[549.244577, 362.867032];[490.180804, 380.255906];[549.244577, 380.255906];3
+[181.901332, 442.477574];[200.861973, 442.477574];[181.901332, 483.599807];[200.861973, 483.599807];1
+[73.061271, 454.306995];[142.182762, 454.306995];[73.061271, 489.347955];[142.182762, 489.347955];3
+[158.610245, 432.877574];[173.249081, 432.877574];[158.610245, 472.439811];[173.249081, 472.439811];1
+[73.301171, 431.987004];[142.182762, 431.987004];[73.301171, 449.627971];[142.182762, 449.627971];3
+[209.500916, 386.291381];[250.324745, 386.291381];[209.500916, 399.107991];[250.324745, 399.107991];3
+[1591.299363, 217.787433];[1599.876461, 217.787433];[1591.299363, 235.1759];[1599.876461, 235.1759];1
+[1130.379548, 340.2114];[1144.987478, 340.2114];[1130.379548, 353.028009];[1144.987478, 353.028009];3
+[581.272303, 536.616011];[594.088913, 536.616011];[581.272303, 589.799764];[594.088913, 589.799764];1
+[73.78127, 385.787023];[157.422756, 385.787023];[73.78127, 420.707982];[157.422756, 420.707982];3
+[677.860729, 333.227044];[704.88452, 333.227044];[677.860729, 350.74801];[704.88452, 350.74801];3
+[254.152434, 391.056019];[266.969044, 391.056019];[254.152434, 398.75984];[266.969044, 398.75984];3
+[44.741282, 377.651385];[54.745166, 377.651385];[44.741282, 390.467994];[54.745166, 390.467994];3
+[1615.059375, 182.053432];[1625.999058, 182.053432];[1615.059375, 199.907543];[1625.999058, 199.907543];1
+[1374.086627, 520.331387];[1394.260495, 520.331387];[1374.086627, 616.919753];[1394.260495, 616.919753];1
+[73.78127, 368.171388];[88.389164, 368.171388];[73.78127, 380.987998];[88.389164, 380.987998];3
+[1257.4595, 290.041339];[1261.277371, 290.041339];[1257.4595, 299.160632];[1261.277371, 299.160632];1
+[1369.791342, 637.89618];[1382.607495, 637.89618];[1369.791342, 678.719729];[1382.607495, 678.719729];1
+[492.700803, 342.70704];[569.622591, 342.70704];[492.700803, 360.095914];[569.622591, 360.095914];3
+[674.38073, 302.627056];[708.484496, 302.627056];[674.38073, 320.148023];[708.484496, 320.148023];3
+[1238.499505, 291.361338];[1257.366341, 291.361338];[1238.499505, 303.871018];[1257.366341, 303.871018];3
+[1340.379464, 273.707068];[1404.101257, 273.707068];[1340.379464, 291.348034];[1404.101257, 291.348034];3
+[1193.391412, 508.156254];[1206.207566, 508.156254];[1193.391412, 556.679777];[1206.207566, 556.679777];1
+[168.340933, 336.827042];[292.720359, 336.827042];[168.340933, 357.00091];[292.720359, 357.00091];3
+[1216.779513, 295.213001];[1237.144475, 295.213001];[1216.779513, 311.987569];[1237.144475, 311.987569];3
+[1193.391412, 582.436225];[1206.207566, 582.436225];[1193.391412, 630.839748];[1206.207566, 630.839748];1
+[489.700804, 299.267057];[583.704673, 299.267057];[489.700804, 336.695923];[583.704673, 336.695923];3
+[228.820908, 293.880288];[240.663153, 293.880288];[228.820908, 303.120932];[240.663153, 303.120932];3
+[550.31267, 418.896286];[563.128823, 418.896286];[550.31267, 464.279781];[563.128823, 464.279781];1
+[128.260949, 332.411403];[168.244766, 332.411403];[128.260949, 345.228013];[168.244766, 345.228013];3
+[170.620932, 293.26706];[296.560358, 293.26706];[170.620932, 312.840928];[296.560358, 312.840928];3
+[552.952669, 551.616227];[565.768822, 551.616227];[552.952669, 604.679734];[565.768822, 604.679734];1
+[79.901168, 311.771411];[89.142983, 311.771411];[79.901168, 324.588021];[89.142983, 324.588021];3
+[1433.271895, 131.897561];[1452.567304, 131.897561];[1433.271895, 150.83994];[1452.567304, 150.83994];3
+[1340.379464, 253.787075];[1404.101257, 253.787075];[1340.379464, 271.548042];[1404.101257, 271.548042];3
+[502.672689, 532.896242];[534.328937, 532.896242];[502.672689, 595.319762];[534.328937, 595.319762];1
+[127.060949, 288.85142];[167.044766, 288.85142];[127.060949, 301.66803];[167.044766, 301.66803];3
+[1574.73937, 71.054519];[1591.878028, 71.054519];[1574.73937, 92.747251];[1591.878028, 92.747251];3
+[1657.900637, 94.211498];[1667.142452, 94.211498];[1657.900637, 107.028108];[1667.142452, 107.028108];3
+[1447.781876, 255.401002];[1460.619875, 255.401002];[1447.781876, 267.599893];[1460.619875, 267.599893];3
+[745.313263, 223.799864];[760.046536, 223.799864];[745.313263, 233.709778];[760.046536, 233.709778];3
+[1301.01948, 195.707099];[1370.903339, 195.707099];[1301.01948, 230.628058];[1370.903339, 230.628058];3
+[372.700851, 266.027071];[406.924675, 266.027071];[372.700851, 283.548037];[406.924675, 283.548037];3
+[1559.619391, 60.494536];[1571.652708, 60.494536];[1559.619391, 77.627266];[1571.652708, 77.627266];3
+[1411.299435, 92.531499];[1421.303319, 92.531499];[1411.299435, 105.348108];[1421.303319, 105.348108];3
+[1332.339467, 144.947119];[1386.483301, 144.947119];[1332.339467, 162.588086];[1386.483301, 162.588086];3
+[1176.09953, 169.539924];[1271.929969, 169.539924];[1176.09953, 188.735609];[1271.929969, 188.735609];3
+[372.580851, 242.499895];[407.182201, 242.499895];[372.580851, 261.69558];[407.182201, 261.69558];3
+[1457.379417, 40.299976];[1543.96988, 40.299976];[1457.379417, 89.255649];[1543.96988, 89.255649];3
+[1431.833544, 267.658168];[1452.850286, 267.658168];[1431.833544, 294.239882];[1452.850286, 294.239882];3
+[840.340664, 152.991573];[847.160648, 152.991573];[840.340664, 165.390912];[847.160648, 165.390912];1
+[730.673304, 198.479921];[754.286545, 198.479921];[730.673304, 223.749789];[754.286545, 223.749789];3
+[647.740741, 183.587104];[698.342945, 183.587104];[647.740741, 201.10807];[698.342945, 201.10807];3
+[847.060661, 144.481675];[858.961488, 144.481675];[847.060661, 160.320606];[858.961488, 160.320606];3
+[1251.579502, 89.162099];[1260.241052, 89.162099];[1251.579502, 100.440512];[1260.241052, 100.440512];3
+[1613.740655, 16.211529];[1629.124509, 16.211529];[1613.740655, 29.028139];[1629.124509, 29.028139];3
+[1393.52662, 184.50045];[1413.700488, 184.50045];[1393.52662, 250.0799];[1413.700488, 250.0799];1
+[823.060671, 159.013418];[839.8344, 159.013418];[823.060671, 181.187519];[839.8344, 181.187519];3
+[1238.619505, 80.271514];[1251.573457, 80.271514];[1238.619505, 96.120516];[1251.573457, 96.120516];3
+[1388.51098, 68.616142];[1401.32759, 68.616142];[1388.51098, 109.439956];[1401.32759, 109.439956];1
+[1217.139513, 73.093945];[1236.388601, 73.093945];[1217.139513, 92.027408];[1236.388601, 92.027408];3
+[1254.459903, 146.79769];[1273.420544, 146.79769];[1254.459903, 201.719919];[1273.420544, 201.719919];1
+[662.500742, 156.493919];[666.896688, 156.493919];[662.500742, 169.30739];[666.896688, 169.30739];1
+[1472.020711, 16.211529];[1487.404566, 16.211529];[1472.020711, 29.028139];[1487.404566, 29.028139];3
+[1175.25953, 51.819971];[1272.169911, 51.819971];[1175.25953, 71.015656];[1272.169911, 71.015656];3
+[965.154963, 118.015049];[989.607477, 118.015049];[965.154963, 151.079919];[989.607477, 151.079919];3
+[566.141179, 136.597692];[575.261823, 136.597692];[566.141179, 150.23994];[575.261823, 150.23994];3
+[1330.300768, 16.211529];[1345.684622, 16.211529];[1330.300768, 29.028139];[1345.684622, 29.028139];3
+[820.420672, 81.960372];[875.102857, 81.960372];[820.420672, 100.921013];[875.102857, 100.921013];3
+[536.873313, 215.759904];[551.606776, 215.759904];[536.873313, 225.783307];[551.606776, 225.783307];3
+[45.221282, 235.931441];[54.463097, 235.931441];[45.221282, 248.748051];[54.463097, 248.748051];3
+[1192.420823, 16.211529];[1200.124645, 16.211529];[1192.420823, 29.028139];[1200.124645, 29.028139];1
+[1180.299933, 195.87767];[1199.260573, 195.87767];[1180.299933, 250.6799];[1199.260573, 250.6799];1
+[238.183122, 152.933404];[250.061432, 152.933404];[238.183122, 162.479935];[250.061432, 162.479935];3
+[650.26074, 147.133914];[662.491106, 147.133914];[650.26074, 164.627387];[662.491106, 164.627387];3
+[1050.70088, 16.211529];[1058.404701, 16.211529];[1050.70088, 29.028139];[1058.404701, 29.028139];1
+[761.980695, 59.139969];[858.891018, 59.139969];[761.980695, 78.335653];[858.891018, 78.335653];3
+[606.820757, 68.739965];[697.971028, 68.739965];[606.820757, 87.93565];[697.971028, 87.93565];3
+[522.233344, 190.439924];[545.846784, 190.439924];[522.233344, 215.703307];[545.846784, 215.703307];3
+[115.540954, 194.747099];[166.143187, 194.747099];[115.540954, 212.268066];[166.143187, 212.268066];3
+[908.980936, 16.211529];[916.684758, 16.211529];[908.980936, 29.028139];[916.684758, 29.028139];1
+[701.872255, 100.776133];[714.688865, 100.776133];[701.872255, 119.999952];[714.688865, 119.999952];3
+[293.275079, 106.188465];[312.101354, 106.188465];[293.275079, 142.079943];[312.101354, 142.079943];1
+[243.58312, 149.465167];[252.701429, 149.465167];[243.58312, 152.879935];[252.701429, 152.879935];3
+[439.660824, 137.173567];[455.330763, 137.173567];[439.660824, 160.307476];[455.330763, 160.307476];3
+[355.900858, 150.240345];[410.703102, 150.240345];[355.900858, 169.200985];[410.703102, 169.200985];3
+[220.795036, 162.385232];[242.891778, 162.385232];[220.795036, 190.199924];[242.891778, 190.199924];3
+[138.100945, 165.973981];[158.335568, 165.973981];[138.100945, 182.747352];[158.335568, 182.747352];3
+[767.380993, 16.211529];[775.084815, 16.211529];[767.380993, 29.028139];[775.084815, 29.028139];1
+[1612.431742, 158.879936];[1626.565951, 158.879936];[1612.431742, 179.640138];[1626.565951, 179.640138];3
+[62.610583, 140.197691];[76.40932, 140.197691];[62.610583, 183.599927];[76.40932, 183.599927];1
+[45.101282, 94.211498];[54.343097, 94.211498];[45.101282, 107.028108];[54.343097, 107.028108];3
+[404.740838, 74.619962];[490.251222, 74.619962];[404.740838, 93.815647];[490.251222, 93.815647];3
+[304.423275, 97.113139];[314.981355, 97.113139];[304.423275, 106.199961];[314.981355, 106.199961];3
+[200.741325, 86.43772];[209.861969, 86.43772];[200.741325, 100.19996];[209.861969, 100.19996];1
+[201.341325, 86.43772];[219.581965, 86.43772];[201.341325, 116.399953];[219.581965, 116.399953];1
+[74.753731, 72.479925];[89.487002, 72.479925];[74.753731, 82.509835];[89.487002, 82.509835];3
+[279.580888, 66.339966];[377.811261, 66.339966];[279.580888, 85.53565];[377.811261, 85.53565];3
+[566.741178, 136.597692];[584.981819, 136.597692];[566.741178, 166.559933];[584.981819, 166.559933];1
+[60.113772, 47.159981];[83.727013, 47.159981];[60.113772, 72.429849];[83.727013, 72.429849];3
+[136.060946, 59.259968];[220.371271, 59.259968];[136.060946, 78.455653];[220.371271, 78.455653];3
+[625.54105, 16.091529];[633.244872, 16.091529];[625.54105, 28.908139];[633.244872, 28.908139];1
+[483.941106, 16.211529];[491.644928, 16.211529];[483.941106, 29.028139];[491.644928, 29.028139];1
+[567.343079, 61.628617];[579.221279, 61.628617];[567.343079, 69.71997];[579.221279, 69.71997];3
+[342.101163, 16.211529];[349.804985, 16.211529];[342.101163, 29.028139];[349.804985, 29.028139];1
+[547.194758, 69.778187];[573.581277, 69.778187];[547.194758, 102.359959];[573.581277, 102.359959];3
+[200.50122, 16.211529];[208.205042, 16.211529];[200.50122, 29.028139];[208.205042, 29.028139];1
+[498.832336, 118.536128];[511.648946, 118.536128];[498.832336, 126.23995];[511.648946, 126.23995];3
+[58.661277, 16.211529];[66.365098, 16.211529];[58.661277, 29.028139];[66.365098, 29.028139];1
+[986.500605, 865.811189];[1013.52445, 865.811189];[986.500605, 878.627799];[1013.52445, 878.627799];3
+[59.741276, 992.0344];[105.967008, 992.0344];[59.741276, 999.307117];[105.967008, 999.307117];3
+[225.581259, 1064.342753];[299.797623, 1064.342753];[225.581259, 1069.826817];[299.797623, 1069.826817];3
+[59.741276, 1074.354367];[267.006923, 1074.354367];[59.741276, 1081.627084];[267.006923, 1081.627084];3
+[140.141244, 1086.71997];[228.783448, 1086.71997];[140.141244, 1095.840615];[228.783448, 1095.840615];3
+[59.741276, 1102.674356];[102.847006, 1102.674356];[59.741276, 1109.947073];[102.847006, 1109.947073];3
+[59.741276, 1113.075261];[294.113384, 1113.075261];[59.741276, 1131.800507];[294.113384, 1131.800507];3
+[59.741276, 1136.634342];[128.406996, 1136.634342];[59.741276, 1143.907059];[128.406996, 1143.907059];3
+[475.06081, 1107.706734];[572.446712, 1107.706734];[475.06081, 1127.280602];[572.446712, 1127.280602];3
+[530.020788, 1108.319962];[541.863032, 1108.319962];[530.020788, 1117.440606];[541.863032, 1117.440606];3
+[619.060752, 1103.291094];[659.884552, 1103.291094];[619.060752, 1116.107704];[659.884552, 1116.107704];3
+[753.340699, 1094.411098];[797.904584, 1094.411098];[753.340699, 1107.227708];[797.904584, 1107.227708];3
+[753.580699, 1120.06886];[796.50293, 1120.06886];[753.580699, 1133.867697];[796.50293, 1133.867697];3
+[970.900611, 1030.77958];[986.123277, 1030.77958];[970.900611, 1077.215254];[986.123277, 1077.215254];1
+[342.101163, 1164.13107];[349.804985, 1164.13107];[342.101163, 1176.94768];[349.804985, 1176.94768];1
+[483.941106, 1164.25107];[491.644928, 1164.25107];[483.941106, 1177.06768];[491.644928, 1177.06768];1
+[625.54105, 1164.13107];[633.244872, 1164.13107];[625.54105, 1176.94768];[633.244872, 1176.94768];1
+[767.381016, 1164.13107];[775.084838, 1164.13107];[767.381016, 1176.94768];[775.084838, 1176.94768];1
+[1451.619419, 965.229798];[1453.980015, 965.229798];[1451.619419, 971.787009];[1453.980015, 971.787009];1
+[1491.579403, 965.829798];[1527.32109, 965.829798];[1491.579403, 972.387009];[1527.32109, 972.387009];3
+[1547.259381, 965.949798];[1556.667662, 965.949798];[1547.259381, 972.507009];[1556.667662, 972.507009];3
+[1576.659369, 965.829798];[1612.401056, 965.829798];[1576.659369, 972.387009];[1612.401056, 972.387009];3
+[1630.419348, 965.949798];[1640.734494, 965.949798];[1630.419348, 972.507009];[1640.734494, 972.507009];3
+[1451.619419, 977.469793];[1453.980015, 977.469793];[1451.619419, 984.027005];[1453.980015, 984.027005];1
+[1491.579403, 978.189793];[1527.32109, 978.189793];[1491.579403, 984.747004];[1527.32109, 984.747004];3
+[1547.259691, 978.189793];[1556.667972, 978.189793];[1547.259691, 984.747004];[1556.667972, 984.747004];3
+[1576.659669, 978.189793];[1612.401356, 978.189793];[1576.659669, 984.747004];[1612.401356, 984.747004];3
+[1630.899994, 978.189793];[1640.271303, 978.189793];[1630.899994, 984.747004];[1640.271303, 984.747004];3
+[1153.179539, 990.429788];[1157.120954, 990.429788];[1153.179539, 996.986999];[1157.120954, 996.986999];1
+[1167.939533, 989.709788];[1232.481401, 989.709788];[1167.939533, 996.267];[1232.481401, 996.267];3
+[1451.619419, 989.709788];[1453.980015, 989.709788];[1451.619419, 996.267];[1453.980015, 996.267];1
+[1491.579403, 990.429788];[1527.32109, 990.429788];[1491.579403, 996.986999];[1527.32109, 996.986999];3
+[1547.259691, 990.429788];[1556.667972, 990.429788];[1547.259691, 996.986999];[1556.667972, 996.986999];3
+[1576.659669, 990.429788];[1612.401356, 990.429788];[1576.659669, 996.986999];[1612.401356, 996.986999];3
+[1630.899994, 990.429788];[1640.271303, 990.429788];[1630.899994, 996.986999];[1640.271303, 996.986999];3
+[1153.179539, 1002.669783];[1157.120954, 1002.669783];[1153.179539, 1009.226994];[1157.120954, 1009.226994];1
+[1167.939533, 1001.949783];[1326.801563, 1001.949783];[1167.939533, 1008.506995];[1326.801563, 1008.506995];3
+[1451.619419, 1001.949783];[1453.980015, 1001.949783];[1451.619419, 1008.506995];[1453.980015, 1008.506995];1
+[1491.579403, 1002.669783];[1527.32109, 1002.669783];[1491.579403, 1009.226994];[1527.32109, 1009.226994];3
+[1547.259691, 1002.669783];[1556.667972, 1002.669783];[1547.259691, 1009.226994];[1556.667972, 1009.226994];3
+[1576.659669, 1002.669783];[1612.401356, 1002.669783];[1576.659669, 1009.226994];[1612.401356, 1009.226994];3
+[1437.819425, 1014.947386];[1467.73837, 1014.947386];[1437.819425, 1021.146955];[1467.73837, 1021.146955];3
+[1500.4594, 1014.947386];[1518.369774, 1014.947386];[1500.4594, 1021.146955];[1518.369774, 1021.146955];3
+[1268.259493, 1014.947386];[1314.258403, 1014.947386];[1268.259493, 1021.146955];[1314.258403, 1021.146955];3
+[1148.019541, 1079.874365];[1174.925371, 1079.874365];[1148.019541, 1087.147082];[1174.925371, 1087.147082];3
+[846.460661, 1086.251101];[861.068533, 1086.251101];[846.460661, 1099.067711];[861.068533, 1099.067711];3
+[846.460661, 1103.386736];[913.182453, 1103.386736];[846.460661, 1120.77561];[913.182453, 1120.77561];3
+[184.421226, 1151.519945];[250.820238, 1151.519945];[184.421226, 1160.640589];[250.820238, 1160.640589];3
+[200.501243, 1164.25107];[208.205065, 1164.25107];[200.501243, 1177.06768];[208.205065, 1177.06768];1
+[1167.939533, 965.109798];[1198.041153, 965.109798];[1167.939533, 971.667009];[1198.041153, 971.667009];3
+[1167.939533, 977.469793];[1232.481401, 977.469793];[1167.939533, 984.027005];[1232.481401, 984.027005];3
+[908.981001, 1164.13107];[916.684822, 1164.13107];[908.981001, 1176.94768];[916.684822, 1176.94768];1
+[1630.899994, 1002.669783];[1640.271303, 1002.669783];[1630.899994, 1009.226994];[1640.271303, 1009.226994];3
+[1533.819386, 1014.947386];[1613.16964, 1014.947386];[1533.819386, 1021.146955];[1613.16964, 1021.146955];3
+[1621.419351, 1014.947386];[1649.76968, 1014.947386];[1621.419351, 1021.146955];[1649.76968, 1021.146955];3
+[1368.339453, 1026.467381];[1432.329619, 1026.467381];[1368.339453, 1032.666951];[1432.329619, 1032.666951];3
+[141.941243, 1136.87995];[145.224675, 1136.87995];[141.941243, 1146.000595];[145.224675, 1146.000595];1
+[59.741276, 1150.914336];[174.126989, 1150.914336];[59.741276, 1158.187054];[174.126989, 1158.187054];3
+[58.661277, 1164.25107];[66.365098, 1164.25107];[58.661277, 1177.06768];[66.365098, 1177.06768];1
+[550.18078, 1077.731105];[591.004579, 1077.731105];[550.18078, 1090.547714];[591.004579, 1090.547714];3
+[446.140822, 1083.946743];[504.543022, 1083.946743];[446.140822, 1101.46771];[504.543022, 1101.46771];3
+[1153.179539, 965.949798];[1157.120954, 965.949798];[1153.179539, 972.507009];[1157.120954, 972.507009];1
+[1153.179539, 978.189793];[1157.120954, 978.189793];[1153.179539, 984.747004];[1157.120954, 984.747004];1
+[1148.019541, 1037.512985];[1624.438334, 1037.512985];[1148.019541, 1074.96047];[1624.438334, 1074.96047];3
+[1065.351837, 1093.199563];[1087.526593, 1093.199563];[1065.351837, 1157.877165];[1087.526593, 1157.877165];1
+[44.741282, 1086.251101];[54.745166, 1086.251101];[44.741282, 1099.067711];[54.745166, 1099.067711];3
+[1657.180637, 944.531158];[1667.960445, 944.531158];[1657.180637, 957.347768];[1667.960445, 957.347768];3
+[1147.299541, 1014.947386];[1163.082836, 1014.947386];[1147.299541, 1021.146955];[1163.082836, 1021.146955];3
+[842.140651, 1058.052974];[885.813743, 1058.052974];[842.140651, 1074.107185];[885.813743, 1074.107185];3
+[671.752621, 1078.535992];[684.568775, 1078.535992];[671.752621, 1130.879548];[684.568775, 1130.879548];1
+[59.741276, 1064.342753];[130.717626, 1064.342753];[59.741276, 1069.826817];[130.717626, 1069.826817];3
+[976.900609, 938.619617];[991.883275, 938.619617];[976.900609, 957.815302];[991.883275, 957.815302];3
+[782.860736, 1018.310953];[834.843042, 1018.310953];[782.860736, 1039.066935];[834.843042, 1039.066935];3
+[715.180714, 1020.699584];[752.123423, 1020.699584];[715.180714, 1039.895269];[752.123423, 1039.895269];3
+[517.432683, 1043.376041];[530.248836, 1043.376041];[517.432683, 1062.719575];[530.248836, 1062.719575];1
+[234.101206, 1015.805621];[294.334146, 1015.805621];[234.101206, 1038.17417];[294.334146, 1038.17417];3
+[89.021264, 1026.011125];[137.645082, 1026.011125];[89.021264, 1038.827735];[137.645082, 1038.827735];3
+[573.94077, 1004.651134];[614.76457, 1004.651134];[573.94077, 1017.467744];[614.76457, 1017.467744];3
+[354.232748, 1051.385739];[367.048902, 1051.385739];[354.232748, 1116.839553];[367.048902, 1116.839553];1
+[204.221218, 1006.314394];[245.646978, 1006.314394];[204.221218, 1013.587111];[245.646978, 1013.587111];3
+[322.541276, 1013.437387];[341.501917, 1013.437387];[322.541276, 1049.03958];[341.501917, 1049.03958];1
+[59.741276, 1006.314394];[115.566992, 1006.314394];[59.741276, 1013.587111];[115.566992, 1013.587111];3
+[1103.979558, 914.893963];[1165.020547, 914.893963];[1103.979558, 951.706963];[1165.020547, 951.706963];3
+[857.740653, 919.813756];[901.536558, 919.813756];[857.740653, 935.74703];[901.536558, 935.74703];3
+[825.232206, 969.095757];[838.048815, 969.095757];[825.232206, 995.999602];[838.048815, 995.999602];1
+[593.860762, 960.733091];[610.305287, 960.733091];[593.860762, 983.147201];[610.305287, 983.147201];3
+[59.741276, 977.994406];[155.167011, 977.994406];[59.741276, 985.267123];[155.167011, 985.267123];3
+[804.47264, 919.60313];[823.168699, 919.60313];[804.47264, 938.999624];[823.168699, 938.999624];3
+[414.580834, 932.019619];[502.371181, 932.019619];[414.580834, 951.215304];[502.371181, 951.215304];3
+[673.9751, 917.411228];[693.581776, 917.411228];[673.9751, 1006.799597];[693.581776, 1006.799597];1
+[362.740855, 935.051162];[403.564654, 935.051162];[362.740855, 947.867771];[403.564654, 947.867771];3
+[59.741276, 943.07442];[291.286592, 943.07442];[59.741276, 972.840664];[291.286592, 972.840664];3
+[490.552694, 959.136077];[503.368847, 959.136077];[490.552694, 966.839613];[503.368847, 966.839613];3
+[44.381282, 944.531158];[55.16109, 944.531158];[44.381282, 957.347768];[55.16109, 957.347768];3
+[570.952661, 912.936093];[583.768815, 912.936093];[570.952661, 932.159627];[583.768815, 932.159627];3
+[857.740644, 890.774196];[892.181091, 890.774196];[857.740644, 912.466914];[892.181091, 912.466914];3
+[1050.700422, 1164.13107];[1058.404244, 1164.13107];[1050.700422, 1176.94768];[1058.404244, 1176.94768];1
+[1204.779518, 1079.994365];[1226.765291, 1079.994365];[1204.779518, 1087.267082];[1226.765291, 1087.267082];3
+[1158.819536, 1092.359968];[1191.181708, 1092.359968];[1158.819536, 1101.480613];[1191.181708, 1101.480613];3
+[1222.059511, 1093.319968];[1241.341711, 1093.319968];[1222.059511, 1102.440612];[1241.341711, 1102.440612];3
+[1261.419495, 1079.874365];[1277.765169, 1079.874365];[1261.419495, 1087.147082];[1277.765169, 1087.147082];3
+[1278.699489, 1092.479968];[1295.192954, 1092.479968];[1278.699489, 1101.600612];[1295.192954, 1101.600612];3
+[1318.179473, 1079.874365];[1355.645224, 1079.874365];[1318.179473, 1107.547074];[1355.645224, 1107.547074];3
+[1417.299433, 1079.879973];[1486.640378, 1079.879973];[1417.299433, 1089.000618];[1486.640378, 1089.000618];3
+[1417.299433, 1108.319962];[1469.600455, 1108.319962];[1417.299433, 1117.440606];[1469.600455, 1117.440606];3
+[1181.619527, 1123.451086];[1201.583466, 1123.451086];[1181.619527, 1136.267696];[1201.583466, 1136.267696];3
+[1188.459525, 1153.696277];[1255.031485, 1153.696277];[1188.459525, 1159.24017];[1255.031485, 1159.24017];3
+[1192.420397, 1164.13107];[1200.124219, 1164.13107];[1192.420397, 1176.94768];[1200.124219, 1176.94768];1
+[1491.099404, 1116.371089];[1630.083507, 1116.371089];[1491.099404, 1129.187699];[1630.083507, 1129.187699];3
+[1221.459511, 1124.165578];[1280.97267, 1124.165578];[1221.459511, 1135.134131];[1280.97267, 1135.134131];3
+[1417.299433, 1136.632945];[1469.158167, 1136.632945];[1417.299433, 1144.680442];[1469.158167, 1144.680442];3
+[1165.299534, 1139.752944];[1280.536955, 1139.752944];[1165.299534, 1147.800441];[1280.536955, 1147.800441];3
+[1615.779354, 1136.632945];[1638.598109, 1136.632945];[1615.779354, 1144.680442];[1638.598109, 1144.680442];3
+[1498.059401, 1145.771077];[1552.083419, 1145.771077];[1498.059401, 1158.587687];[1552.083419, 1158.587687];3
+[1323.219471, 1153.312939];[1389.616813, 1153.312939];[1323.219471, 1161.360435];[1389.616813, 1161.360435];3
+[1330.300378, 1164.13107];[1345.684232, 1164.13107];[1330.300378, 1176.94768];[1345.684232, 1176.94768];3
+[1657.540637, 1086.251101];[1667.544521, 1086.251101];[1657.540637, 1099.067711];[1667.544521, 1099.067711];3
+[1491.099404, 1087.091101];[1615.083514, 1087.091101];[1491.099404, 1099.907711];[1615.083514, 1099.907711];3
+[1472.020711, 1164.25107];[1487.404566, 1164.25107];[1472.020711, 1177.06768];[1487.404566, 1177.06768];3
+[1622.499425, 1147.325569];[1645.892419, 1147.325569];[1622.499425, 1158.294122];[1645.892419, 1158.294122];3
+[1612.900791, 1164.25107];[1629.964553, 1164.25107];[1612.900791, 1177.06768];[1629.964553, 1177.06768];3

文件差异内容过多而无法显示
+ 38 - 0
temporary/ist_to_csv_with_corner_points.csv


文件差异内容过多而无法显示
+ 331 - 0
temporary/list_to_csv_with_corner_points.csv


文件差异内容过多而无法显示
+ 320 - 0
temporary/values_clusteredfrom_precomputed_dbscan.csv


+ 10 - 0
venv/bin/chardetect

@@ -0,0 +1,10 @@
+#!/home/bscheibel/PycharmProjects/dxf_reader/venv/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+
+from chardet.cli.chardetect import main
+
+if __name__ == '__main__':
+    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
+    sys.exit(main())

+ 10 - 0
venv/bin/f2py

@@ -0,0 +1,10 @@
+#!/home/bscheibel/PycharmProjects/dxf_reader/venv/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+
+from numpy.f2py.f2py2e import main
+
+if __name__ == '__main__':
+    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
+    sys.exit(main())

+ 10 - 0
venv/bin/f2py3

@@ -0,0 +1,10 @@
+#!/home/bscheibel/PycharmProjects/dxf_reader/venv/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+
+from numpy.f2py.f2py2e import main
+
+if __name__ == '__main__':
+    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
+    sys.exit(main())

+ 10 - 0
venv/bin/f2py3.7

@@ -0,0 +1,10 @@
+#!/home/bscheibel/PycharmProjects/dxf_reader/venv/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+
+from numpy.f2py.f2py2e import main
+
+if __name__ == '__main__':
+    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
+    sys.exit(main())

+ 12 - 0
venv/bin/tika-python

@@ -0,0 +1,12 @@
+#!/home/bscheibel/PycharmProjects/dxf_reader/venv/bin/python
+# EASY-INSTALL-ENTRY-SCRIPT: 'tika==1.19','console_scripts','tika-python'
+__requires__ = 'tika==1.19'
+import re
+import sys
+from pkg_resources import load_entry_point
+
+if __name__ == '__main__':
+    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
+    sys.exit(
+        load_entry_point('tika==1.19', 'console_scripts', 'tika-python')()
+    )

二进制
venv/lib/python3.7/site-packages/__pycache__/pyparsing.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/__pycache__/six.cpython-37.pyc


+ 50 - 0
venv/lib/python3.7/site-packages/certifi-2019.6.16.dist-info/DESCRIPTION.rst

@@ -0,0 +1,50 @@
+Certifi: Python SSL Certificates
+================================
+
+`Certifi`_ is a carefully curated collection of Root Certificates for
+validating the trustworthiness of SSL certificates while verifying the identity
+of TLS hosts. It has been extracted from the `Requests`_ project.
+
+Installation
+------------
+
+``certifi`` is available on PyPI. Simply install it with ``pip``::
+
+    $ pip install certifi
+
+Usage
+-----
+
+To reference the installed certificate authority (CA) bundle, you can use the
+built-in function::
+
+    >>> import certifi
+
+    >>> certifi.where()
+    '/usr/local/lib/python2.7/site-packages/certifi/cacert.pem'
+
+Or from the command line::
+
+    $ python -m certifi
+    /usr/local/lib/python2.7/site-packages/certifi/cacert.pem
+
+Enjoy!
+
+1024-bit Root Certificates
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Browsers and certificate authorities have concluded that 1024-bit keys are
+unacceptably weak for certificates, particularly root certificates. For this
+reason, Mozilla has removed any weak (i.e. 1024-bit key) certificate from its
+bundle, replacing it with an equivalent strong (i.e. 2048-bit or greater key)
+certificate from the same CA. Because Mozilla removed these certificates from
+its bundle, ``certifi`` removed them as well.
+
+In previous versions, ``certifi`` provided the ``certifi.old_where()`` function
+to intentionally re-add the 1024-bit roots back into your bundle. This was not
+recommended in production and therefore was removed at the end of 2018.
+
+.. _`Certifi`: https://certifi.io/en/latest/
+.. _`Requests`: http://docs.python-requests.org/en/latest/
+
+

+ 1 - 0
venv/lib/python3.7/site-packages/certifi-2019.6.16.dist-info/INSTALLER

@@ -0,0 +1 @@
+pip

+ 21 - 0
venv/lib/python3.7/site-packages/certifi-2019.6.16.dist-info/LICENSE.txt

@@ -0,0 +1,21 @@
+This packge contains a modified version of ca-bundle.crt:
+
+ca-bundle.crt -- Bundle of CA Root Certificates
+
+Certificate data from Mozilla as of: Thu Nov  3 19:04:19 2011#
+This is a bundle of X.509 certificates of public Certificate Authorities
+(CA). These were automatically extracted from Mozilla's root certificates
+file (certdata.txt).  This file can be found in the mozilla source tree:
+http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1#
+It contains the certificates in PEM format and therefore
+can be directly used with curl / libcurl / php_curl, or with
+an Apache+mod_ssl webserver for SSL client authentication.
+Just configure this file as the SSLCACertificateFile.#
+
+***** BEGIN LICENSE BLOCK *****
+This Source Code Form is subject to the terms of the Mozilla Public License,
+v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain
+one at http://mozilla.org/MPL/2.0/.
+
+***** END LICENSE BLOCK *****
+@(#) $RCSfile: certdata.txt,v $ $Revision: 1.80 $ $Date: 2011/11/03 15:11:58 $

+ 74 - 0
venv/lib/python3.7/site-packages/certifi-2019.6.16.dist-info/METADATA

@@ -0,0 +1,74 @@
+Metadata-Version: 2.0
+Name: certifi
+Version: 2019.6.16
+Summary: Python package for providing Mozilla's CA Bundle.
+Home-page: https://certifi.io/
+Author: Kenneth Reitz
+Author-email: me@kennethreitz.com
+License: MPL-2.0
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
+Classifier: Natural Language :: English
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+
+Certifi: Python SSL Certificates
+================================
+
+`Certifi`_ is a carefully curated collection of Root Certificates for
+validating the trustworthiness of SSL certificates while verifying the identity
+of TLS hosts. It has been extracted from the `Requests`_ project.
+
+Installation
+------------
+
+``certifi`` is available on PyPI. Simply install it with ``pip``::
+
+    $ pip install certifi
+
+Usage
+-----
+
+To reference the installed certificate authority (CA) bundle, you can use the
+built-in function::
+
+    >>> import certifi
+
+    >>> certifi.where()
+    '/usr/local/lib/python2.7/site-packages/certifi/cacert.pem'
+
+Or from the command line::
+
+    $ python -m certifi
+    /usr/local/lib/python2.7/site-packages/certifi/cacert.pem
+
+Enjoy!
+
+1024-bit Root Certificates
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Browsers and certificate authorities have concluded that 1024-bit keys are
+unacceptably weak for certificates, particularly root certificates. For this
+reason, Mozilla has removed any weak (i.e. 1024-bit key) certificate from its
+bundle, replacing it with an equivalent strong (i.e. 2048-bit or greater key)
+certificate from the same CA. Because Mozilla removed these certificates from
+its bundle, ``certifi`` removed them as well.
+
+In previous versions, ``certifi`` provided the ``certifi.old_where()`` function
+to intentionally re-add the 1024-bit roots back into your bundle. This was not
+recommended in production and therefore was removed at the end of 2018.
+
+.. _`Certifi`: https://certifi.io/en/latest/
+.. _`Requests`: http://docs.python-requests.org/en/latest/
+
+

+ 15 - 0
venv/lib/python3.7/site-packages/certifi-2019.6.16.dist-info/RECORD

@@ -0,0 +1,15 @@
+certifi-2019.6.16.dist-info/DESCRIPTION.rst,sha256=aLNHONztn2ZiBpSTivVFy6EDIWmuNYSsEQwx4NWbvB4,1580
+certifi-2019.6.16.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
+certifi-2019.6.16.dist-info/LICENSE.txt,sha256=anCkv2sBABbVmmS4rkrY3H9e8W8ftFPMLs13HFo0ETE,1048
+certifi-2019.6.16.dist-info/METADATA,sha256=bmxei5fIjQJCT_5_2k2ReQ1IDvrguA5Qan26BXRcbN0,2522
+certifi-2019.6.16.dist-info/RECORD,,
+certifi-2019.6.16.dist-info/WHEEL,sha256=5wvfB7GvgZAbKBSE9uX9Zbi6LCL-_KgezgHblXhCRnM,113
+certifi-2019.6.16.dist-info/metadata.json,sha256=soH2Ke2dIXqmSFFz1swsK3Uno_9ed57OqPIXuOxFXYA,1048
+certifi-2019.6.16.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8
+certifi/__init__.py,sha256=phsMyKTQP7MMe1wAHfhXPbQVxL3wXixOomxzNh5Cwa4,52
+certifi/__main__.py,sha256=FiOYt1Fltst7wk9DRa6GCoBr8qBUxlNQu_MKJf04E6s,41
+certifi/__pycache__/__init__.cpython-37.pyc,,
+certifi/__pycache__/__main__.cpython-37.pyc,,
+certifi/__pycache__/core.cpython-37.pyc,,
+certifi/cacert.pem,sha256=DddOv7pQyMB8zNNgiXSSFrPVn7EN8qbe7P6h_IYyuek,282085
+certifi/core.py,sha256=EuFc2BsToG5O1-qsx4BSjQ1r1-7WRtH87b1WflZOWhI,218

+ 6 - 0
venv/lib/python3.7/site-packages/certifi-2019.6.16.dist-info/WHEEL

@@ -0,0 +1,6 @@
+Wheel-Version: 1.0
+Generator: bdist_wheel (0.30.0.a0)
+Root-Is-Purelib: true
+Tag: py2-none-any
+Tag: py3-none-any
+

文件差异内容过多而无法显示
+ 1 - 0
venv/lib/python3.7/site-packages/certifi-2019.6.16.dist-info/metadata.json


+ 1 - 0
venv/lib/python3.7/site-packages/certifi-2019.6.16.dist-info/top_level.txt

@@ -0,0 +1 @@
+certifi

+ 3 - 0
venv/lib/python3.7/site-packages/certifi/__init__.py

@@ -0,0 +1,3 @@
+from .core import where
+
+__version__ = "2019.06.16"

+ 2 - 0
venv/lib/python3.7/site-packages/certifi/__main__.py

@@ -0,0 +1,2 @@
+from certifi import where
+print(where())

二进制
venv/lib/python3.7/site-packages/certifi/__pycache__/__init__.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/certifi/__pycache__/__main__.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/certifi/__pycache__/core.cpython-37.pyc


文件差异内容过多而无法显示
+ 4618 - 0
venv/lib/python3.7/site-packages/certifi/cacert.pem


+ 15 - 0
venv/lib/python3.7/site-packages/certifi/core.py

@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+
+"""
+certifi.py
+~~~~~~~~~~
+
+This module returns the installation location of cacert.pem.
+"""
+import os
+
+
+def where():
+    f = os.path.dirname(__file__)
+
+    return os.path.join(f, 'cacert.pem')

+ 70 - 0
venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/DESCRIPTION.rst

@@ -0,0 +1,70 @@
+Chardet: The Universal Character Encoding Detector
+--------------------------------------------------
+
+.. image:: https://img.shields.io/travis/chardet/chardet/stable.svg
+   :alt: Build status
+   :target: https://travis-ci.org/chardet/chardet
+
+.. image:: https://img.shields.io/coveralls/chardet/chardet/stable.svg
+   :target: https://coveralls.io/r/chardet/chardet
+
+.. image:: https://img.shields.io/pypi/v/chardet.svg
+   :target: https://warehouse.python.org/project/chardet/
+   :alt: Latest version on PyPI
+
+.. image:: https://img.shields.io/pypi/l/chardet.svg
+   :alt: License
+
+
+Detects
+ - ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants)
+ - Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese)
+ - EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese)
+ - EUC-KR, ISO-2022-KR (Korean)
+ - KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic)
+ - ISO-8859-5, windows-1251 (Bulgarian)
+ - ISO-8859-1, windows-1252 (Western European languages)
+ - ISO-8859-7, windows-1253 (Greek)
+ - ISO-8859-8, windows-1255 (Visual and Logical Hebrew)
+ - TIS-620 (Thai)
+
+.. note::
+   Our ISO-8859-2 and windows-1250 (Hungarian) probers have been temporarily
+   disabled until we can retrain the models.
+
+Requires Python 2.6, 2.7, or 3.3+.
+
+Installation
+------------
+
+Install from `PyPI <https://pypi.python.org/pypi/chardet>`_::
+
+    pip install chardet
+
+Documentation
+-------------
+
+For users, docs are now available at https://chardet.readthedocs.io/.
+
+Command-line Tool
+-----------------
+
+chardet comes with a command-line script which reports on the encodings of one
+or more files::
+
+    % chardetect somefile someotherfile
+    somefile: windows-1252 with confidence 0.5
+    someotherfile: ascii with confidence 1.0
+
+About
+-----
+
+This is a continuation of Mark Pilgrim's excellent chardet. Previously, two
+versions needed to be maintained: one that supported python 2.x and one that
+supported python 3.x.  We've recently merged with `Ian Cordasco <https://github.com/sigmavirus24>`_'s
+`charade <https://github.com/sigmavirus24/charade>`_ fork, so now we have one
+coherent version that works for Python 2.6+.
+
+:maintainer: Dan Blanchard
+
+

+ 1 - 0
venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/INSTALLER

@@ -0,0 +1 @@
+pip

+ 96 - 0
venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/METADATA

@@ -0,0 +1,96 @@
+Metadata-Version: 2.0
+Name: chardet
+Version: 3.0.4
+Summary: Universal encoding detector for Python 2 and 3
+Home-page: https://github.com/chardet/chardet
+Author: Daniel Blanchard
+Author-email: dan.blanchard@gmail.com
+License: LGPL
+Keywords: encoding,i18n,xml
+Platform: UNKNOWN
+Classifier: Development Status :: 4 - Beta
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Classifier: Topic :: Text Processing :: Linguistic
+
+Chardet: The Universal Character Encoding Detector
+--------------------------------------------------
+
+.. image:: https://img.shields.io/travis/chardet/chardet/stable.svg
+   :alt: Build status
+   :target: https://travis-ci.org/chardet/chardet
+
+.. image:: https://img.shields.io/coveralls/chardet/chardet/stable.svg
+   :target: https://coveralls.io/r/chardet/chardet
+
+.. image:: https://img.shields.io/pypi/v/chardet.svg
+   :target: https://warehouse.python.org/project/chardet/
+   :alt: Latest version on PyPI
+
+.. image:: https://img.shields.io/pypi/l/chardet.svg
+   :alt: License
+
+
+Detects
+ - ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants)
+ - Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese)
+ - EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese)
+ - EUC-KR, ISO-2022-KR (Korean)
+ - KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic)
+ - ISO-8859-5, windows-1251 (Bulgarian)
+ - ISO-8859-1, windows-1252 (Western European languages)
+ - ISO-8859-7, windows-1253 (Greek)
+ - ISO-8859-8, windows-1255 (Visual and Logical Hebrew)
+ - TIS-620 (Thai)
+
+.. note::
+   Our ISO-8859-2 and windows-1250 (Hungarian) probers have been temporarily
+   disabled until we can retrain the models.
+
+Requires Python 2.6, 2.7, or 3.3+.
+
+Installation
+------------
+
+Install from `PyPI <https://pypi.python.org/pypi/chardet>`_::
+
+    pip install chardet
+
+Documentation
+-------------
+
+For users, docs are now available at https://chardet.readthedocs.io/.
+
+Command-line Tool
+-----------------
+
+chardet comes with a command-line script which reports on the encodings of one
+or more files::
+
+    % chardetect somefile someotherfile
+    somefile: windows-1252 with confidence 0.5
+    someotherfile: ascii with confidence 1.0
+
+About
+-----
+
+This is a continuation of Mark Pilgrim's excellent chardet. Previously, two
+versions needed to be maintained: one that supported python 2.x and one that
+supported python 3.x.  We've recently merged with `Ian Cordasco <https://github.com/sigmavirus24>`_'s
+`charade <https://github.com/sigmavirus24/charade>`_ fork, so now we have one
+coherent version that works for Python 2.6+.
+
+:maintainer: Dan Blanchard
+
+

+ 91 - 0
venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/RECORD

@@ -0,0 +1,91 @@
+../../../bin/chardetect,sha256=x7hXNI2IRLtM-HCwdzrg7eNDuOsU7-n2Sbl0rA1ZB5Y,266
+chardet-3.0.4.dist-info/DESCRIPTION.rst,sha256=PQ4sBsMyKFZkjC6QpmbpLn0UtCNyeb-ZqvCGEgyZMGk,2174
+chardet-3.0.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
+chardet-3.0.4.dist-info/METADATA,sha256=RV_2I4B1Z586DL8oVO5Kp7X5bUdQ5EuKAvNoAEF8wSw,3239
+chardet-3.0.4.dist-info/RECORD,,
+chardet-3.0.4.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110
+chardet-3.0.4.dist-info/entry_points.txt,sha256=fAMmhu5eJ-zAJ-smfqQwRClQ3-nozOCmvJ6-E8lgGJo,60
+chardet-3.0.4.dist-info/metadata.json,sha256=0htbRM18ujyGZDdfowgAqj6Hq2eQtwzwyhaEveKntgo,1375
+chardet-3.0.4.dist-info/top_level.txt,sha256=AowzBbZy4x8EirABDdJSLJZMkJ_53iIag8xfKR6D7kI,8
+chardet/__init__.py,sha256=YsP5wQlsHJ2auF1RZJfypiSrCA7_bQiRm3ES_NI76-Y,1559
+chardet/__pycache__/__init__.cpython-37.pyc,,
+chardet/__pycache__/big5freq.cpython-37.pyc,,
+chardet/__pycache__/big5prober.cpython-37.pyc,,
+chardet/__pycache__/chardistribution.cpython-37.pyc,,
+chardet/__pycache__/charsetgroupprober.cpython-37.pyc,,
+chardet/__pycache__/charsetprober.cpython-37.pyc,,
+chardet/__pycache__/codingstatemachine.cpython-37.pyc,,
+chardet/__pycache__/compat.cpython-37.pyc,,
+chardet/__pycache__/cp949prober.cpython-37.pyc,,
+chardet/__pycache__/enums.cpython-37.pyc,,
+chardet/__pycache__/escprober.cpython-37.pyc,,
+chardet/__pycache__/escsm.cpython-37.pyc,,
+chardet/__pycache__/eucjpprober.cpython-37.pyc,,
+chardet/__pycache__/euckrfreq.cpython-37.pyc,,
+chardet/__pycache__/euckrprober.cpython-37.pyc,,
+chardet/__pycache__/euctwfreq.cpython-37.pyc,,
+chardet/__pycache__/euctwprober.cpython-37.pyc,,
+chardet/__pycache__/gb2312freq.cpython-37.pyc,,
+chardet/__pycache__/gb2312prober.cpython-37.pyc,,
+chardet/__pycache__/hebrewprober.cpython-37.pyc,,
+chardet/__pycache__/jisfreq.cpython-37.pyc,,
+chardet/__pycache__/jpcntx.cpython-37.pyc,,
+chardet/__pycache__/langbulgarianmodel.cpython-37.pyc,,
+chardet/__pycache__/langcyrillicmodel.cpython-37.pyc,,
+chardet/__pycache__/langgreekmodel.cpython-37.pyc,,
+chardet/__pycache__/langhebrewmodel.cpython-37.pyc,,
+chardet/__pycache__/langhungarianmodel.cpython-37.pyc,,
+chardet/__pycache__/langthaimodel.cpython-37.pyc,,
+chardet/__pycache__/langturkishmodel.cpython-37.pyc,,
+chardet/__pycache__/latin1prober.cpython-37.pyc,,
+chardet/__pycache__/mbcharsetprober.cpython-37.pyc,,
+chardet/__pycache__/mbcsgroupprober.cpython-37.pyc,,
+chardet/__pycache__/mbcssm.cpython-37.pyc,,
+chardet/__pycache__/sbcharsetprober.cpython-37.pyc,,
+chardet/__pycache__/sbcsgroupprober.cpython-37.pyc,,
+chardet/__pycache__/sjisprober.cpython-37.pyc,,
+chardet/__pycache__/universaldetector.cpython-37.pyc,,
+chardet/__pycache__/utf8prober.cpython-37.pyc,,
+chardet/__pycache__/version.cpython-37.pyc,,
+chardet/big5freq.py,sha256=D_zK5GyzoVsRes0HkLJziltFQX0bKCLOrFe9_xDvO_8,31254
+chardet/big5prober.py,sha256=kBxHbdetBpPe7xrlb-e990iot64g_eGSLd32lB7_h3M,1757
+chardet/chardistribution.py,sha256=3woWS62KrGooKyqz4zQSnjFbJpa6V7g02daAibTwcl8,9411
+chardet/charsetgroupprober.py,sha256=6bDu8YIiRuScX4ca9Igb0U69TA2PGXXDej6Cc4_9kO4,3787
+chardet/charsetprober.py,sha256=KSmwJErjypyj0bRZmC5F5eM7c8YQgLYIjZXintZNstg,5110
+chardet/cli/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
+chardet/cli/__pycache__/__init__.cpython-37.pyc,,
+chardet/cli/__pycache__/chardetect.cpython-37.pyc,,
+chardet/cli/chardetect.py,sha256=YBO8L4mXo0WR6_-Fjh_8QxPBoEBNqB9oNxNrdc54AQs,2738
+chardet/codingstatemachine.py,sha256=VYp_6cyyki5sHgXDSZnXW4q1oelHc3cu9AyQTX7uug8,3590
+chardet/compat.py,sha256=PKTzHkSbtbHDqS9PyujMbX74q1a8mMpeQTDVsQhZMRw,1134
+chardet/cp949prober.py,sha256=TZ434QX8zzBsnUvL_8wm4AQVTZ2ZkqEEQL_lNw9f9ow,1855
+chardet/enums.py,sha256=Aimwdb9as1dJKZaFNUH2OhWIVBVd6ZkJJ_WK5sNY8cU,1661
+chardet/escprober.py,sha256=kkyqVg1Yw3DIOAMJ2bdlyQgUFQhuHAW8dUGskToNWSc,3950
+chardet/escsm.py,sha256=RuXlgNvTIDarndvllNCk5WZBIpdCxQ0kcd9EAuxUh84,10510
+chardet/eucjpprober.py,sha256=iD8Jdp0ISRjgjiVN7f0e8xGeQJ5GM2oeZ1dA8nbSeUw,3749
+chardet/euckrfreq.py,sha256=-7GdmvgWez4-eO4SuXpa7tBiDi5vRXQ8WvdFAzVaSfo,13546
+chardet/euckrprober.py,sha256=MqFMTQXxW4HbzIpZ9lKDHB3GN8SP4yiHenTmf8g_PxY,1748
+chardet/euctwfreq.py,sha256=No1WyduFOgB5VITUA7PLyC5oJRNzRyMbBxaKI1l16MA,31621
+chardet/euctwprober.py,sha256=13p6EP4yRaxqnP4iHtxHOJ6R2zxHq1_m8hTRjzVZ95c,1747
+chardet/gb2312freq.py,sha256=JX8lsweKLmnCwmk8UHEQsLgkr_rP_kEbvivC4qPOrlc,20715
+chardet/gb2312prober.py,sha256=gGvIWi9WhDjE-xQXHvNIyrnLvEbMAYgyUSZ65HUfylw,1754
+chardet/hebrewprober.py,sha256=c3SZ-K7hvyzGY6JRAZxJgwJ_sUS9k0WYkvMY00YBYFo,13838
+chardet/jisfreq.py,sha256=vpmJv2Bu0J8gnMVRPHMFefTRvo_ha1mryLig8CBwgOg,25777
+chardet/jpcntx.py,sha256=PYlNqRUQT8LM3cT5FmHGP0iiscFlTWED92MALvBungo,19643
+chardet/langbulgarianmodel.py,sha256=1HqQS9Pbtnj1xQgxitJMvw8X6kKr5OockNCZWfEQrPE,12839
+chardet/langcyrillicmodel.py,sha256=LODajvsetH87yYDDQKA2CULXUH87tI223dhfjh9Zx9c,17948
+chardet/langgreekmodel.py,sha256=8YAW7bU8YwSJap0kIJSbPMw1BEqzGjWzqcqf0WgUKAA,12688
+chardet/langhebrewmodel.py,sha256=JSnqmE5E62tDLTPTvLpQsg5gOMO4PbdWRvV7Avkc0HA,11345
+chardet/langhungarianmodel.py,sha256=RhapYSG5l0ZaO-VV4Fan5sW0WRGQqhwBM61yx3yxyOA,12592
+chardet/langthaimodel.py,sha256=8l0173Gu_W6G8mxmQOTEF4ls2YdE7FxWf3QkSxEGXJQ,11290
+chardet/langturkishmodel.py,sha256=W22eRNJsqI6uWAfwXSKVWWnCerYqrI8dZQTm_M0lRFk,11102
+chardet/latin1prober.py,sha256=S2IoORhFk39FEFOlSFWtgVybRiP6h7BlLldHVclNkU8,5370
+chardet/mbcharsetprober.py,sha256=AR95eFH9vuqSfvLQZN-L5ijea25NOBCoXqw8s5O9xLQ,3413
+chardet/mbcsgroupprober.py,sha256=h6TRnnYq2OxG1WdD5JOyxcdVpn7dG0q-vB8nWr5mbh4,2012
+chardet/mbcssm.py,sha256=SY32wVIF3HzcjY3BaEspy9metbNSKxIIB0RKPn7tjpI,25481
+chardet/sbcharsetprober.py,sha256=LDSpCldDCFlYwUkGkwD2oFxLlPWIWXT09akH_2PiY74,5657
+chardet/sbcsgroupprober.py,sha256=1IprcCB_k1qfmnxGC6MBbxELlKqD3scW6S8YIwdeyXA,3546
+chardet/sjisprober.py,sha256=IIt-lZj0WJqK4rmUZzKZP4GJlE8KUEtFYVuY96ek5MQ,3774
+chardet/universaldetector.py,sha256=qL0174lSZE442eB21nnktT9_VcAye07laFWUeUrjttY,12485
+chardet/utf8prober.py,sha256=IdD8v3zWOsB8OLiyPi-y_fqwipRFxV9Nc1eKBLSuIEw,2766
+chardet/version.py,sha256=sp3B08mrDXB-pf3K9fqJ_zeDHOCLC8RrngQyDFap_7g,242

+ 6 - 0
venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/WHEEL

@@ -0,0 +1,6 @@
+Wheel-Version: 1.0
+Generator: bdist_wheel (0.29.0)
+Root-Is-Purelib: true
+Tag: py2-none-any
+Tag: py3-none-any
+

+ 3 - 0
venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/entry_points.txt

@@ -0,0 +1,3 @@
+[console_scripts]
+chardetect = chardet.cli.chardetect:main
+

文件差异内容过多而无法显示
+ 1 - 0
venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/metadata.json


+ 1 - 0
venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/top_level.txt

@@ -0,0 +1 @@
+chardet

+ 39 - 0
venv/lib/python3.7/site-packages/chardet/__init__.py

@@ -0,0 +1,39 @@
+######################## BEGIN LICENSE BLOCK ########################
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301  USA
+######################### END LICENSE BLOCK #########################
+
+
+from .compat import PY2, PY3
+from .universaldetector import UniversalDetector
+from .version import __version__, VERSION
+
+
+def detect(byte_str):
+    """
+    Detect the encoding of the given byte string.
+
+    :param byte_str:     The byte sequence to examine.
+    :type byte_str:      ``bytes`` or ``bytearray``
+    """
+    if not isinstance(byte_str, bytearray):
+        if not isinstance(byte_str, bytes):
+            raise TypeError('Expected object of type bytes or bytearray, got: '
+                            '{0}'.format(type(byte_str)))
+        else:
+            byte_str = bytearray(byte_str)
+    detector = UniversalDetector()
+    detector.feed(byte_str)
+    return detector.close()

二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/__init__.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/big5freq.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/big5prober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/chardistribution.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/charsetgroupprober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/charsetprober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/codingstatemachine.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/compat.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/cp949prober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/enums.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/escprober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/escsm.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/eucjpprober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/euckrfreq.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/euckrprober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/euctwfreq.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/euctwprober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/gb2312freq.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/gb2312prober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/hebrewprober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/jisfreq.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/jpcntx.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/langbulgarianmodel.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/langcyrillicmodel.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/langgreekmodel.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/langhebrewmodel.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/langhungarianmodel.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/langthaimodel.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/langturkishmodel.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/latin1prober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/mbcharsetprober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/mbcsgroupprober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/mbcssm.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/sbcharsetprober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/sbcsgroupprober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/sjisprober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/universaldetector.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/utf8prober.cpython-37.pyc


二进制
venv/lib/python3.7/site-packages/chardet/__pycache__/version.cpython-37.pyc


+ 0 - 0
venv/lib/python3.7/site-packages/chardet/big5freq.py


部分文件因为文件数量过多而无法显示