zoukankan      html  css  js  c++  java
  • Atitit word结构化提取考试试题读取 poi读取word nlp aiprj 目录 1.1. 结构化后数据 1 1.2. 文字读取 1 1.3. 图片读取 1 1.4. Doc的表格读取 /

    Atitit word结构化提取考试试题读取 poi读取word nlp aiprj

     

    目录

    1.1. 结构化后数据 1

    1.2. 文字读取 1

    1.3. 图片读取 1

    1.4. Doc的表格读取 //遍历range范围内的table。 2

    1.5. code 2

     

      1. 结构化后数据

     

    {

    "linenum":85,

    "topicNum":8,

    "linenumEnd":95,

    "topicType":"8.singlechoice[单选题](3分)68494d9cc2bb4396af50b30fc9e79d63\u00A0",

    "topic":"Servlet生命周期的初始化在什么时候会调用init()方法(  A  )",

    "ans":"A"

    }

     

      1. 文字读取

    文字操作中,可以通过HWPFDocument 直接读取,也可以获取到Range对象后读取

     

      1. 图片读取

    Doc获取文档中的所有图片,并存储,其中Picture 对象中,getContent()可获取字节流,然后获取字节数据,自己写出来,也可以通过writeImageContent 来直接写,图片的开始位置可以获取,但是结束位置没有

     

      1. Doc的表格读取 //遍历range范围内的table。  

    TableIterator tableIter = new TableIterator(range);

    while (tableIter.hasNext()) {

        Table table = tableIter.next();

        //开始位置

        int start = table.getStartOffset();

        //结束位置

        int end = table.getEndOffset();

        System.out.printf("开始位置%d,结束为止%d\r\n",start,end);

     

        //获取行的数目

        int rowNum = table.numRows();

        for (int j = 0; j < rowNum; j++) {

            //获取每一行

            TableRow row = table.getRow(j);

            int cellNum = row.numCells();

            for (int k = 0; k < cellNum; k++) {

                //获取每一列

                TableCell cell = row.getCell(k);

                // 输出单元格的文本

                System.out.println(cell.text().trim());

            }

        }

    }

    ---------------------

      1.  code

    package apkg;

     

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileNotFoundException;

    import java.io.IOException;

    import java.io.InputStream;

    import java.rmi.NoSuchObjectException;

    import java.text.Collator;

    import java.util.Arrays;

    import java.util.Collections;

    import java.util.Comparator;

    import java.util.List;

    import java.util.Locale;

    import java.util.Map;

    import java.util.Set;

    import java.util.regex.Matcher;

    import java.util.regex.Pattern;

     

    import org.apache.commons.io.FileUtils;

    import org.apache.poi.POIXMLProperties.CoreProperties;

    import org.apache.poi.hwpf.HWPFDocument;

    import org.apache.poi.hwpf.usermodel.Range;

    import org.apache.poi.xwpf.extractor.XWPFWordExtractor;

    import org.apache.poi.xwpf.usermodel.XWPFDocument;

     

    import com.alibaba.fastjson.JSON;

    import com.google.common.collect.Lists;

    import com.google.common.collect.Maps;

    import com.google.common.collect.Sets;

     

    public class kaosiWordExt {

     

    public static void main(String[] args) throws IOException {

    // readTwoMannamesFileJoin();

     

    // String f="C:\\Users\\Administrator\\Desktop\\namelib\\好听的女孩名字2225个.docx";

    // List<String> femnames=getList2220femNnames(f,1);

    // System.out.println(femnames);

    // FileUtils.writeLines(new File("D:\\namelib\\fem2200names.txt"), femnames);

    String f="D:\\0db\\人工智能1807javaA-云计算《电子商务》第3周周考理论题.doc";

    // List<Map> femnames=getList(f);

    HWPFDocument doc = new HWPFDocument(new FileInputStream(f));

     

    //通过 Doc对象直接获取Text

    StringBuilder sb = doc.getText();

     String string = sb.toString();

    System.out.println(string);

    FileUtils.write(new File("d:\\doc2txt.txt"), string);

     

    //通过Range对象获取Text

    Range range = doc.getRange();

    String text = range.text();

    System.out.println(text);

     

     

    List<Map> topics=Lists.newLinkedList();

    String[] lines=string.split("\r");

     

    for(int lineIdx=1;lineIdx<=lines.length;lineIdx++)

    {

    if(lineIdx==7)

    System.out.println("d");

    int linesListIdex=lineIdx-1;

         String line=lines[linesListIdex].trim();

         if(line.length()==0)

          continue;

         System.out.println(" lineIdx :"+lineIdx);

         if(lineIdx==404)

    System.out.println("d");

         if(KaosiUtil.isTopicStart(line.trim()))

         {

          Map topic=Maps.newLinkedHashMap();

          topic.put("linenum", lineIdx);

          topic.put("topicNum",KaosiUtil.gettopicNum(line.trim()));       

          topic.put("linenumEnd", KaosiUtil.getNextTopicLineNum(lines,lineIdx+1));

          topic.put("topicType",line.trim());

          topic.put("topic",KaosiUtil.gettopic(lines,lineIdx+1));

          topic.put("ans",KaosiUtil.getAnsBytopictitle( topic.get("topic").toString() ));

          topics.add(topic);

          System.out.println(JSON.toJSONString(topic, true));

         }

    }

     

     

     

     

    }

     

     

     

    (9+条消息)POI之Word文档读取-yellowcong - yelllowcong的专栏 - CSDN博客.html

  • 相关阅读:
    21.面向对象:多态与多态性、面向对象进阶:内置方法,反射。异常处理
    mysql 复习
    Python之math模块
    mysql数据类型转换
    Remmina
    JWT校验流程源码
    JWT签发token
    elasticsearch使用
    Flask基础
    初识Flask
  • 原文地址:https://www.cnblogs.com/attilax/p/15197275.html
Copyright © 2011-2022 走看看