一、背景
因业务需求,目前正在实现一项需求,即将一份试卷的内容提取出来,由非结构化到结构化的转换。在试卷解析的时候发现存在大纲目录中带有自动编号的格式,按照传统的方式没有解析出来,花了一番功夫,最终还是搞定了,于是写下来分享给大家。
二、概述
从一份word格式的试卷中,用java从XWPFParagraph中先判断是否有编号,如果有再提取自动编号,自动编号还是会区分不同类型的,如中文的一、二、三等,阿拉伯数字的1、2、3等,或者是字母a、b、c等。
三、正文
1、需要先实现一个自动编号上下文的class:
NumberingContext里面注册了不同格式的编号,如大写字母编号、小写字母编号、中文编号等,具体可以看代码:
public class NumberingContext {
private final Map<String, List<Integer>> numberingStates = new HashMap<>();
// 编号格式映射(可以扩展更多格式)
public static final Map<String, NumberFormatter> FORMATTERS = new HashMap<>();
static {
FORMATTERS.put("decimal", new DecimalFormatter());
FORMATTERS.put("lowe
Word自动编号提取技术详解

最低0.47元/天 解锁文章
4292

被折叠的 条评论
为什么被折叠?



