• 【Tika基础教程之中的一个】Tika基础教程




    一、高速入门

    1、Tika是一个用于文本解释的框架。其本身并不提供不论什么的库用于解释文本,而是调用各种各样的库,如POI,PDFBox等。

    使用Tika。能够提取文件里的作者、标题、创建时间、正文等内容,相比于java.io自带的一些功能(如FileInputStream,FIleReader,Scanner等):

    (1)若文档为纯文本,如txt,html,java文件等。则二者对于文件内容的提取基本无区别,都可将内容呈现出来。

    (2)若文档为富文本,如office,pdf等。使用java.io直接读取内容会得到一串乱码,而须要通过种种工具去提取正文内容。如PDFBox提取PDF文件,POI提取office文件等。

    TIka已将各种工具作了统一封装,形成统一的API,用于提取文本正文。


    但注意:解释文本

    上述步骤仅仅是将正文内容提取了出来,如将word文档、Html文档等的正文提取出来,但未对文档正文的内容进行解释,此时须要用到其他的工具如:

    (1)DOM4J用于提取XML正文中的内容,如某个元素或者属性的值。

    (2)HtmlPaser用于提取HTML正文中的内容,也是提取无素或者属性的值。比方提取文中的超链接等。

    Tika是否已经完毕此功能的封装还不确认。以后再研究。


    2、使用GUI界面解释文本

    (1)进入Tika全部的文件夹。执行下面命令:

    java -jar "tika-app-1.5 (1).jar" -g


    (2)Tika的图形界面被打开。然后找开File-openURL:


    (3)点击确认后。即返回解释结果

    默认情况下显示的是文本的元信息


    (4)能够通过view菜单中的选项,分别查看 metadata, formatted text, plain text, main content, stuctured text等信息。


    3、调用API解释文件


    package com.ljh.test;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    
    import org.apache.tika.exception.TikaException;
    import org.apache.tika.metadata.Metadata;
    import org.apache.tika.parser.AutoDetectParser;
    import org.apache.tika.parser.ParseContext;
    import org.apache.tika.parser.Parser;
    import org.apache.tika.sax.BodyContentHandler;
    import org.xml.sax.ContentHandler;
    import org.xml.sax.SAXException;
    
    public class TikaBasicUtil {
    	
    	public String fileToTxt(File f) {
    		//1、创建一个parser
    		Parser parser = new AutoDetectParser();
    		InputStream is = null;
    		try {
    			Metadata metadata = new Metadata();
    			metadata.set(Metadata.RESOURCE_NAME_KEY, f.getName());
    			is = new FileInputStream(f);
    			ContentHandler handler = new BodyContentHandler();
    			ParseContext context = new ParseContext();
    			context.set(Parser.class,parser);
    			//2、运行parser的parse()方法。
    			parser.parse(is,handler, metadata,context);
    			for(String name:metadata.names()) {
    				System.out.println(name+":"+metadata.get(name));
    			}
    			return handler.toString();
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (SAXException e) {
    			e.printStackTrace();
    		} catch (TikaException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if(is!=null) is.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    		return null;
    	}
    
    }
    

    測试程序例如以下:

    package com.ljh.test;
    
    import java.io.File;
    
    import org.junit.Test;
    
    public class TikaBasicUtilTest {
    
    	@Test
    	public void test() {
    		TikaBasicUtil tbu = new TikaBasicUtil();
    		System.out.println(tbu.fileToTxt(new File("D:/G组-C罗压哨助攻扳平 葡萄牙2-2美国保晋级希望.docx")));
    	}
    
    }
    
    输出结果例如以下:

    cp:revision:3
    meta:last-author:lujinhong
    Last-Author:lujinhong
    meta:save-date:2014-06-23T04:24:00Z
    Application-Name:Microsoft Office Word
    dcterms:created:2014-06-23T04:23:00Z
    Author:lujinhong
    Application-Version:15.0000
    Character-Count-With-Spaces:1188
    date:2014-06-23T04:24:00Z
    Total-Time:1
    extended-properties:Template:Normal.dotm
    meta:line-count:8
    creator:lujinhong
    publisher:
    Word-Count:177
    meta:paragraph-count:2
    Creation-Date:2014-06-23T04:23:00Z
    extended-properties:AppVersion:15.0000
    meta:author:lujinhong
    Line-Count:8
    extended-properties:Application:Microsoft Office Word
    resourceName:G组-C罗压哨助攻扳平 葡萄牙2-2美国保晋级希望.docx
    Paragraph-Count:2
    Last-Save-Date:2014-06-23T04:24:00Z
    Revision-Number:3
    meta:creation-date:2014-06-23T04:23:00Z
    dcterms:modified:2014-06-23T04:24:00Z
    Template:Normal.dotm
    Page-Count:1
    meta:character-count:1013
    dc:creator:lujinhong
    meta:word-count:177
    Last-Modified:2014-06-23T04:24:00Z
    extended-properties:Company:
    modified:2014-06-23T04:24:00Z
    xmpTPg:NPages:1
    extended-properties:TotalTime:1
    dc:publisher:
    Character Count:1013
    meta:page-count:1
    meta:character-count-with-spaces:1188
    Content-Type:application/vnd.openxmlformats-officedocument.wordprocessingml.document
    上半时美国队开球。第5分钟。葡萄牙队领先进球,维罗索左路45度把球吊入禁区,美国后卫卡梅伦解围失误,纳尼在远门柱附近右脚抽射球门上角建功,葡萄牙1-0美国。


    第9分钟,邓普西突破被断。无队友接应。第11分钟,美国长传反击。科斯塔头球解围。第12分钟。阿尔维斯铲倒约翰逊。美国队获得禁区前随意球,邓普西主罚大力攻门。球擦着横梁高出。

    第16分钟,葡萄牙中锋波斯蒂加受伤,被埃德换下。第18分钟。美国右路传中。邓普西禁区左肋抽射打高。
    第24分钟。美国队后场断球反击,布拉德利禁区前抽射,球擦着横梁高出。第27分钟。祖西传球,邓普西禁区右肋抽射,科斯塔堵枪眼。1分钟后,布拉德利远射稍偏。第32分钟,美国反击。约翰逊远射打偏。第34分钟,维罗索远射打在后卫身上,C罗拿球被吹越位。


    第35分钟,C罗远射被霍华德扑住。

    第40分钟,琼斯受伤,主裁判吹停比赛,进入喝水时间。

    第42分钟,葡萄牙反击。C罗分球。纳尼右路远射被扑出。第43分钟。葡萄牙获得禁区前随意球,C罗主罚打高。第45分钟,纳尼远射打中立柱。埃德补射被霍华德用指尖挡出。上半时结束,葡萄牙1-0美国。


    下半时易边,葡萄牙队用卡瓦略换下阿尔梅达。第48分钟,卡梅伦解围打在队友被贝斯勒身上。埃德抢射打高。第55分钟,美国队错失良机,约翰逊右路下底传中,布拉德利5码处推射,科斯塔门线堵枪眼。第62分钟,葡萄牙反击,C罗禁区右肋射门打偏。


    第64分钟,美国队扳平比分,角球罚出被后卫解围出禁区。琼斯外围拿球横向闪过纳尼,右脚大力抽射,球飞进球门死角。葡萄牙1-1美国。
    第66分钟,葡萄牙反击。纳尼右路传中,远端梅雷莱斯抽射被门将扑出。

    第68分钟,葡萄牙用完第三个换人名额。瓦雷拉换下梅雷莱斯。第74分钟,纳尼突入禁区摔倒,裁判没有吹罚点球。

    1分钟后,琼斯滑铲放倒穆蒂尼奥。吃到黄牌。

    第80分钟,纳尼右路禁区前横切远射打高。
    第81分钟。美国队反超比分。琼斯中路分球,叶德林右路下底传中,布拉德利12码处推射打在后卫身上,祖西左路拿球传中。邓普西用胸口把球撞进空门,美国2-1葡萄牙。


    第86分钟,维罗索直塞,C罗在越位位置完毕射门。葡萄牙右路起球。C罗头球攻门顶偏。第93分钟,葡萄牙左路起球,C罗头球顶偏。

    第95分钟。C罗右路传中,瓦雷拉头冲顶破门,2-2!全场结束,美国2-2葡萄牙。
    葡萄牙(433):22-贝托/21-佩雷拉、2-阿尔维斯、13-科斯塔、19-A-阿尔梅达(46'卡瓦略)/8-穆蒂尼奥、4-维罗索、16-梅雷莱斯(68'瓦雷拉)/17-纳尼、23-波斯蒂加(16'埃德)、7-C罗
    美国(4231):1-霍华德/7-比斯利、5-贝斯勒、20-卡梅伦、23-F-约翰逊/15-贝克曼、13-琼斯/19-祖西(91'冈萨雷斯)、11-贝多亚(72'叶德林)、4-布拉德利/8-邓普西(87'沃多洛斯基)






  • 相关阅读:
    2021-04-02:给定一个正方形或者长方形矩阵matrix,实现zigzag打印。[[0,1,2],[3,4,5],[6,7,8]]的打印顺序是0,1,3,6,4,2,5,7,8。
    2021-04-01:给定一个正方形矩阵matrix,原地调整成顺时针90度转动的样子。[[a,b,c],[d,e,f],[g,h,i]]变成[[g,d,a],[h,e,b],[i,f,c]]。
    2021-03-31:给定一个数组arr,给定一个值v。求子数组平均值小于等于v的最长子数组长度。
    2021-03-30:给定一个整数组成的无序数组arr,值可能正、可能负、可能0。给定一个整数值K,找到arr的所有子数组里,哪个子数组的累加和<=K,并且是长度最大的。返回其长度。
    2021-03-29:无序数组arr,子数组-1和1的数量一样多,请问最长子数组的长度是多少?
    04Null和Undefined
    03数据类型
    win10 命令行下 重启虚拟网卡
    JavaScript注释及命名规范
    第一个javascrpt代码
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6932412.html
Copyright © 2020-2023  润新知