1、写一个覆盖大部分文档的规则;
2、写备用规则,定义备用变量,当主要规则抽取的字段为空时,启用备用变量;
3、按优先级排列抽取规则;
4、防止值覆盖,可以在赋值前判断变量是否为空,若非空,则不进行赋值操作;
5、写区间限制规则(Squeeze Theorem),用两条规则限制抽取的文本范围,比如行数;
6、多个类别抽取时,句子拼接操作放在单独的抽取函数里面,防止类间相互影响(一个类别需要句子拼接,另一个类别不需要,解耦)。
7、赋值前先用 if not ‘变量名’ 判空,防止值覆盖。(这点很重要)
8、字段拼接,注意拼接后句子是否通顺。
9、先从大处着手,提交初版结果
10、找问题,优化代码
说明:句子需要拼接的原因是 pdf 转 txt 时,有些句子被切断了。是否需要拼接要考虑大多数文本的情况(大局观),如果要拼接,建议写到具体的单一抽取函数里面去。最难的情况是同一类文档,有的字段需要拼接,有的不需要,这种就具体情况具体分析。如果600篇文档就一篇文档的抽取字段被切断了,可以忽略不计,大局观。
# 去除字段首尾的符号
# filter()函数去除列表中值为假的元素如【0,False,None,[],{},''】
# 固定字段+拼接字段
temp_str = u",".join(filter(None, [a, b, c]))
# temp_str = u",".join([a, b, c])
# 无法处理 a = ['a', '', 'd'] 得到 a,,d
info = info_dict[u"c"] + info_dict[u"name"]+temp_str