之后肯定会用到json格式的数据训练模型,现在先记录一下json数据的格式:
{
"data_root": "datasets/data/train",
"data_list": [
{
"img_name": "X00016469670.jpg",
"annotations": [
{
"polygon": [
[
98.0,
26.0
],
[
321.0,
26.0
],
[
321.0,
66.0
],
[
98.0,
66.0
]
],
"text": "TAN CHAY YEE",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
138.0,
95.0
],
[
279.0,
95.0
],
[
279.0,
120.0
],
[
138.0,
120.0
]
],
"text": "*** COPY ***",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
80.0,
119.0
],
[
329.0,
119.0
],
[
329.0,
140.0
],
[
80.0,
140.0
]
],
"text": "OJC MARKETING SDN BHD",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
129.0,
142.0
],
[
287.0,
142.0
],
[
287.0,
160.0
],
[
129.0,
160.0
]
],
"text": "ROC NO: 538358-H",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
104.0,
163.0
],
[
306.0,
163.0
],
[
306.0,
182.0
],
[
104.0,
182.0
]
],
"text": "",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
123.0,
185.0
],
[
286.0,
185.0
],
[
286.0,
205.0
],
[
123.0,
205.0
]
],
"text": "",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
116.0,
205.0
],
[
292.0,
205.0
],
[
292.0,
223.0
],
[
116.0,
223.0
]
],
"text": " JOHOR",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
69.0,
226.0
],
[
339.0,
226.0
],
[
339.0,
248.0
],
[
69.0,
248.0
]
],
"text": "TEL:07-388 2218 FAX:07-388 8218",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
110.0,
249.0
],
[
300.0,
249.0
],
[
300.0,
272.0
],
[
110.0,
272.0
]
],
"text": "EMAIL:NG@OJCGROUP.COM",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
145.0,
291.0
],
[
266.0,
291.0
],
[
266.0,
313.0
],
[
145.0,
313.0
]
],
"text": "TAX INVOICE",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
27.0,
326.0
],
[
109.0,
326.0
],
[
109.0,
341.0
],
[
27.0,
341.0
]
],
"text": "INVOICE NO",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
116.0,
322.0
],
[
259.0,
322.0
],
[
259.0,
343.0
],
[
116.0,
343.0
]
],
"text": ": PEGIV-1030765",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
25.0,
347.0
],
[
72.0,
347.0
],
[
72.0,
365.0
],
[
25.0,
365.0
]
],
"text": "DATE",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
121.0,
348.0
],
[
326.0,
348.0
],
[
326.0,
363.0
],
[
121.0,
363.0
]
],
"text": ": 15/01/2019 11:05:16 AM",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
20.0,
369.0
],
[
84.0,
369.0
],
[
84.0,
387.0
],
[
20.0,
387.0
]
],
"text": "CASHIER",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
120.0,
367.0
],
[
253.0,
367.0
],
[
253.0,
385.0
],
[
120.0,
385.0
]
],
"text": ": NG CHUAN MIN",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
29.0,
390.0
],
[
180.0,
390.0
],
[
180.0,
408.0
],
[
29.0,
408.0
]
],
"text": "SALES PERSON : FATIN",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
27.0,
412.0
],
[
71.0,
412.0
],
[
71.0,
429.0
],
[
27.0,
429.0
]
],
"text": "BILL TO",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
119.0,
412.0
],
[
365.0,
412.0
],
[
365.0,
428.0
],
[
119.0,
428.0
]
],
"text": ": THE PEAK QUARRY WORKS",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
23.0,
441.0
],
[
87.0,
441.0
],
[
87.0,
465.0
],
[
23.0,
465.0
]
],
"text": "ADDRESS",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
112.0,
444.0
],
[
140.0,
444.0
],
[
140.0,
459.0
],
[
112.0,
459.0
]
],
"text": ":.",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
26.0,
527.0
],
[
114.0,
527.0
],
[
114.0,
543.0
],
[
26.0,
543.0
]
],
"text": "DESCRIPTION",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
183.0,
525.0
],
[
210.0,
525.0
],
[
210.0,
544.0
],
[
183.0,
544.0
]
],
"text": "QTY",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
231.0,
526.0
],
[
274.0,
526.0
],
[
274.0,
544.0
],
[
231.0,
544.0
]
],
"text": "PRICE",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
295.0,
528.0
],
[
357.0,
528.0
],
[
357.0,
544.0
],
[
295.0,
544.0
]
],
"text": "AMOUNT",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
22.0,
550.0
],
[
105.0,
550.0
],
[
105.0,
564.0
],
[
22.0,
564.0
]
],
"text": "000000111",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
199.0,
550.0
],
[
215.0,
550.0
],
[
215.0,
565.0
],
[
199.0,
565.0
]
],
"text": "1",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
217.0,
549.0
],
[
271.0,
549.0
],
[
271.0,
566.0
],
[
217.0,
566.0
]
],
"text": "193.00",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
304.0,
549.0
],
[
383.0,
549.0
],
[
383.0,
566.0
],
[
304.0,
566.0
]
],
"text": "193.00 SR",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
22.0,
576.0
],
[
254.0,
576.0
],
[
254.0,
591.0
],
[
22.0,
591.0
]
],
"text": "KINGS SAFETY SHOES KWD B05",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
28.0,
611.0
],
[
73.0,
611.0
],
[
73.0,
633.0
],
[
28.0,
633.0
]
],
"text": "QTY: 1",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
108.0,
610.0
],
[
250.0,
610.0
],
[
250.0,
629.0
],
[
108.0,
629.0
]
],
"text": "TOTAL EXCLUDE GST:",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
299.0,
613.0
],
[
354.0,
613.0
],
[
354.0,
629.0
],
[
299.0,
629.0
]
],
"text": "193.00",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
122.0,
632.0
],
[
252.0,
632.0
],
[
252.0,
653.0
],
[
122.0,
653.0
]
],
"text": "TOTAL GST @6%:",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
319.0,
633.0
],
[
357.0,
633.0
],
[
357.0,
652.0
],
[
319.0,
652.0
]
],
"text": "0.00",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
103.0,
654.0
],
[
253.0,
654.0
],
[
253.0,
673.0
],
[
103.0,
673.0
]
],
"text": "TOTAL INCLUSIVE GST:",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
305.0,
656.0
],
[
357.0,
656.0
],
[
357.0,
672.0
],
[
305.0,
672.0
]
],
"text": "193.00",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
158.0,
675.0
],
[
251.0,
675.0
],
[
251.0,
691.0
],
[
158.0,
691.0
]
],
"text": "ROUND AMT:",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
319.0,
674.0
],
[
357.0,
674.0
],
[
357.0,
691.0
],
[
319.0,
691.0
]
],
"text": "0.00",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
173.0,
697.0
],
[
240.0,
697.0
],
[
240.0,
718.0
],
[
173.0,
718.0
]
],
"text": "TOTAL:",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
290.0,
699.0
],
[
355.0,
699.0
],
[
355.0,
718.0
],
[
290.0,
718.0
]
],
"text": "193.00",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
145.0,
729.0
],
[
231.0,
729.0
],
[
231.0,
745.0
],
[
145.0,
745.0
]
],
"text": "VISA CARD",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
304.0,
729.0
],
[
356.0,
729.0
],
[
356.0,
746.0
],
[
304.0,
746.0
]
],
"text": "193.00",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
93.0,
751.0
],
[
228.0,
751.0
],
[
228.0,
769.0
],
[
93.0,
769.0
]
],
"text": "XXXXXXXXXXXX4318",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
89.0,
772.0
],
[
231.0,
772.0
],
[
231.0,
793.0
],
[
89.0,
793.0
]
],
"text": "APPROVAL CODE:000",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
34.0,
843.0
],
[
371.0,
843.0
],
[
371.0,
866.0
],
[
34.0,
866.0
]
],
"text": "GOODS SOLD ARE NOT RETURNABLE & REFUNDABLE",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
},
{
"polygon": [
[
44.0,
865.0
],
[
362.0,
865.0
],
[
362.0,
886.0
],
[
44.0,
886.0
]
],
"text": "****THANK YOU. PLEASE COME AGAIN.****",
"illegibility": false,
"language": "Latin",
"chars": [
{
"polygon": [],
"char": "",
"illegibility": false,
"language": "Latin"
}
]
}
]
}
]
}
下面是一个json转icdar15标注的脚本,如果要用于自己的数据,可能还需要稍微改一下代码。
# -*- coding: utf-8 -*-
import glob
import os.path
import numpy as np
import shutil
import json
INPUT_PATH = "E:/card_data/card_autolabel/20200116"
def jsonTotxt(jsonfile):
filename=os.path.split(jsonfile)[1].split('.')[0]
savefile = os.path.join("E:/datasets/icdar",filename+'.txt')
# read json
#setting = []
with open(jsonfile,'r') as f:
b = f.read()
#b = b.encode("utf-8-sig")
data = json.loads(b)
#print(data)
with open(savefile,"a",encoding='utf-8') as f:
for coordict in data['shapes']:
coordlist = coordict['points']
for point in coordlist:
f.write(str(point).replace('[','').replace(']','')+',')
f.write('###'+'\n')
sub_dirs = [x[0] for x in os.walk(INPUT_PATH)]
print(sub_dirs)
is_rootdir = True
for sub_dir in sub_dirs:
if is_rootdir:
is_rootdir = False
continue
extensions_images = ['jpg','JPG','jpeg','JPEG']
extensions_labels = 'json'
images_list = []
#json_list = []
#dir_name = os.path.basename(sub_dir)
i = 0
for extension in extensions_images:
images_glob = os.path.join(INPUT_PATH,'*.'+extension)
images_list.extend(glob.glob(images_glob))
if not images_list:
continue
for image_list in images_list:
shutil.copy(image_list,"E:/datasets/icdar/")
i +=1
if i%1000==0:
print(i)
json_glob = os.path.join(INPUT_PATH,'*.'+ extensions_labels)
json_lists=glob.glob(json_glob)
for json_list in json_lists:
jsonTotxt(json_list)