通过apache tika从文档(pdf、doc、docx、txt)中 提取特征数据
本文介绍如何通过apache tika从文档(pdf、doc、docx、txt)中 提取特征数据,比如文档中有身份证、姓名等信息。【全部是经本人实际测试过的功能】
1、需引入相关pom依赖
<!-- apache tika 包,用于解析pdf、word文本文档-->
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>2.8.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tika/tika-parsers-standard-package -->
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers-standard-package</artifactId>
<version>2.8.0</version>
</dependency>
2、编写相关代码
package org.example.wordcontent; import org.apache.tika.Tika;
import org.apache.tika.exception.TikaException; import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern; /**
* 通过apache tika从 pdf、doc、docx、txt中提取数据
* 核心依赖jar【tika-core 2.8.0、tika-parsers-standard-package 2.8.0(解析word时,需另外外依赖xmlbeans 5.1.1)】
* 假定文档中的内容具有下列属性:
* [授权人(签字):张三
* 身份证号码: 322025199902256056 ]
* 待提取的内容为张三 和 322025199902256056。张三和322025199902256056的值会变
*/
public class TikaExtrator {
public static void main(String[] args) { try {
//// 替换为实际的PDF文件路径 测试例子: 如 测试.xlsx.
InputStream input = TikaExtrator.class.getClassLoader().getResourceAsStream("综合信息查询授权书测试.docx"); String text = extractTextFromFile(input);
System.out.println("text: " + text);
String name = extractName(text);
String idNumber = extractIdNumber(text);
System.out.println("授权人姓名: " + name);
System.out.println("身份证号码: " + idNumber);
} catch (IOException e) {
e.printStackTrace();
}
} /**
*
* @param inputStream
* @return
* @throws IOException
*/
private static String extractTextFromFile(InputStream inputStream) throws IOException {
Tika tika = new Tika();
try {
return tika.parseToString(inputStream);
} catch (TikaException e) {
throw new RuntimeException(e);
}
} private static String extractName(String text) {
Pattern pattern = Pattern.compile("授权人(签字)[::]([\\u4e00-\\u9fa5]+)");
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
return matcher.group(1);
}
return "";
} private static String extractIdNumber(String text) {
Pattern pattern = Pattern.compile("身份证号码[::](\\d{18}|\\d{15})");
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
return matcher.group(1);
}
return "";
}
}
3、执行效果

通过apache tika从文档(pdf、doc、docx、txt)中 提取特征数据的更多相关文章
- 文档PDF开放
108个大数据文档PDF开放下载 投递人 itwriter 发布于 2015-01-29 13:34 评论(13) 有2251人阅读 原文链接 [收藏] « » 文/36 大数据 总有人问我 ...
- 【资源】108个大数据文档PDF开放下载-整理后打包下载
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 本博客其他.NET开源项目文章目录:h ...
- here文档 here doc EOF重定向
here文档 here doc EOF重定向 http://www.cnblogs.com/xiangzi888/archive/2012/03/24/2415077.html 在shell脚本程序 ...
- layui中文离线文档PDF下载
失效链接处理 layui中文离线文档 PDF 下载 本站整理下载: 链接:https://pan.baidu.com/s/18FbllhLEezXTn-y1eiiNKg 提取码:nuqz ...
- 一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
在目前的软件项目中,都会较多的使用到对文档的操作,用于记录和统计相关业务信息.由于系统自身提供了对文档的相关操作,所以在一定程度上极大的简化了软件使用者的工作量. 在.NET项目中如果用户提出了相关文 ...
- word中怎样把文档里的中文以及中文字符全选?
word中怎样把文档里的中文以及中文字符全选? 参考: 百度 案例: 有个文档是中英文混杂的 现在需要把中文以及中文字符全部设置成别的颜色 应该怎样操作? 有80多页 别说让我一个一个的设置 以wor ...
- java将office文档pdf文档转换成swf文件在线预览
第一步,安装openoffice.org openoffice.org是一套sun的开源office办公套件,能在widows,linux,solaris等操作系统上执行. 主要模块有writer(文 ...
- poi导出word文档,doc和docx
maven <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency> <gro ...
- 年度钜献,108个大数据文档PDF开放下载
1.大数据的开放式创新——吴甘沙 相关阅读:[PPT]吴甘沙:让不同领域的数据真正流动.融合起来,才能释放大数据的价值 下载:大数据的开放式创新——吴甘沙.pdf 2.微软严治庆——让大数据为每个人服 ...
- xml文档对象模型doc
对与DOM来说 ,一切都是节点Node; ②Document可以看成一个节点,Element可以看成一个节点,Text可以看成一个节点, 封装出来的对象都可以看成节点Node; ③在JDK中,Node ...
随机推荐
- h5使用vue-photo-preview 做全屏预览
h5页面使用全屏预览 最近需要在微信小程序中跳转到h5页面 在h5页面中需要进行图片预览展示 由于没有使用第三方的组件库. 只能手写,但是时间很紧张. 所以只能够寻找第三方的插件 vue-photo- ...
- 《HelloGitHub》第 106 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. github.com/521xueweihan/HelloG ...
- 用SignalR和Layui搭建自己的web聊天网站
1.开发背景 之前是做项目一直有一个困扰,就是如何进行及时通讯,本人.Net开发,不太想用别人的接口,然后偶然的机会知道了SignalR,那么什么是SignalR呢? 2.SignalR简介 ASP. ...
- 如何安全发布 CompletableFuture ?Java9新增方法分析
如何安全发布 CompletableFuture ?Java9新增方法分析 本文未经允许禁止转载. JDK9 中对于CompletableFuture做了新的增强,除了超时功能(orTimeout), ...
- 本地搭建DeepSeek和知识库 Dify做智能体Agent(推荐)
一.基础信息 1.硬件环境: CPU >= 2 Core 显存/RAM ≥ 16 GiB(推荐) 2.软件 (1)Ollama Ollama 是一款跨平台的大模型管理客户端(MacOS.Wind ...
- Luogu P2540 NOIP2015提高组 斗地主 加强版 题解 [ 紫 ] [ 深搜 ] [ 剪枝 ]
斗地主:一步一步推性质就能做出来的剪枝题. 这题思路和小木棒的剪枝思路极其相似,剪枝的角度都差不多. 其实大部分搜索剪枝题都是先观察性质,列出性质后选择几个比较关键且代码好写的性质进行剪枝,特别要注意 ...
- 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
在人工智能飞速发展的今天,大语言模型的应用越来越广泛.DeepSeek 作为近期爆火的一款大语言模型,受到了众多开发者的青睐. 今天这篇内容,就来聊聊,如何在本地自己的电脑上部署DeepSeek. 1 ...
- 什么是OpenStack?
OpenStack是一个云平台管理的项目,它不是一个软件,它是由几个主要的组件组合起来,为公有云.私有云和混合云的建设与管理提供软件的开源项目.现在已经有来自100多个国家的数万名个人和200多家企业 ...
- docker下安装Harbor
安装docker-compose # 安装docker-compose curl -L https://github.com/docker/compose/releases/download/1.18 ...
- qa 工作
1.定流程--监控参照规范(cmmi,公司自己的,scrum[例会.启动会])--产出物报告 (项目维度)-配置--经盈.财务 2.培训组织-组织讲师(知识库).外部拓展