第6天:发票,驾驶证

213 阅读2分钟

三、fp

crop_image_req = 0

crop_item_image_req = 1

recognize_type = 0

segment_type_id = 12 # by default, assume it is other invoice


  1. image_data_list = [''] -- 刚取回的图像文件内容

    -- 开始计时!

  2. np_raw_image_data -- numpy数组 -- numpy数组格式的原始数据

  3. segment_result = -- 识别服务器返回的xml类型(str)的分割图像数据( 共3个{发票对象} )

  4. fapiao_list_tmp -- 用json将xml装载成了字典类型

  5. fapiao_list -- 检查剔除13(非发票)类型

  6. np_fapiao_image_data -- numpy数组 -- 切割出当前这张发票

  7. 开子线程,传入当前发票信息

t = threading.Thread(target=do_fapiao_recognize, args=(np_fapiao_image_data, segment_type_id,quad, split_score))

1. 线程1


id相关:

(id)segment_type_id4 --> description

recogize_feat_id38 (选择啥类型识别算法)

tcnn_class_id = do_text_classify(xml) :10 识别出‘出租车发票’

result_dict['type'] = segment_id_description[segment_type_id]['id'] ‘10201’ result_dict['type_msg']=segment_id_description[segment_type_id]['page_name'] ‘出租车票’


  1. np_fapiao_image_data -- 对传进来的 image_data 进行size放大(本次数据维度大,不用放大)
  2. xml -- 将发票数据发给算法识别,返回xml字块结果
xml = recognize_type_array(recogize_feat_id, np_fapiao_image_data.tostring(), np_fapiao_image_data.shape, enable_vertical=True)

  1. page_ele = ET.fromstring(xml) -- 使用ElementTree解析XML

----取出其中的rotation属性用以旋转发票数据(np_fapiao_image_data)

  1. np_fapiao_image_data 旋转后的数据
    解析xml获取发票类型为‘出租车发票’

parser_func_list = [ <taix_invoice_parser> ]

  1. result_dict -- 加载 <taix_invoice_parser> 函数处理的结果 -- 文字关联!
result_dict = parser_func(xml, np_fapiao_image_data, rotation)

6. reco_result_dict = result_dict['recognize_result']

  1. result_dict -- 添加了一些类型等信息后

  1. reco_result_dict = result_dict['recognize_result'] -- 还是只取‘recognize_result’

  2. reco_list.append(result_dict)

关键信息截图,向result_dict添加分数,将该发票信息append到发票列表里,线程结束

四、驾驶证

1. 只识别出字块

1.1. xml -- 第一次将原始数据发到后台识别 第一步,只识别出字块

1.2. page_ele = ET.fromstring(xml) 将xml转成ET,以提取旋转角度rotation

2. 将字块关联对应

hs.lib_parser.EXParseTextPageXml()

ret = hs.lib_parser.EXParseTextPageXml(xml, result_buffer, buffer_size, type_id)
第二步,通过此函数将字块关联对应

下述(1,2,3内容其实一样)

2.1. result_buffer -- raw:

2.2. result_buffer -- value:

2.3. result_xml -- 从 result_buffer 中取出结果xml数据

2.4. page = ET.fromstring(result_xml)

2.4.1 根节点 标签:

2.4.2 子节点 标签:
2.4.3 孙子节点 标签们:

2.5. result_dict -- 将page(ElenmentTree类型)转化为dict(字典类型)-- 通过遍历节点

2.6. new_result_dict -- 将上面结果排序整理
封装返回