通过apache tika从文档(pdf、doc、docx、txt)中 提取特性数据 ...

宁睿  论坛元老 | 2025-4-23 09:27:48 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 2076|帖子 2076|积分 6238

  本文介绍如何通过apache tika从文档(pdf、doc、docx、txt)中 提取特性数据,好比文档中有身份证、姓名等信息。【全部是经本人实际测试过的功能】
1、需引入干系pom依赖
  1.         
  2.         <dependency>
  3.             <groupId>org.apache.tika</groupId>
  4.             <artifactId>tika-core</artifactId>
  5.                 <version>2.8.0</version>
  6.         </dependency>
  7.         
  8.         <dependency>
  9.             <groupId>org.apache.tika</groupId>
  10.             <artifactId>tika-parsers-standard-package</artifactId>
  11.             <version>2.8.0</version>
  12.         </dependency>
复制代码
2、编写干系代码
 
  1. package org.example.wordcontent;
  2. import org.apache.tika.Tika;
  3. import org.apache.tika.exception.TikaException;
  4. import java.io.File;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.util.regex.Matcher;
  8. import java.util.regex.Pattern;
  9. /**
  10. * 通过apache tika从 pdf、doc、docx、txt中提取数据
  11. * 核心依赖jar【tika-core 2.8.0、tika-parsers-standard-package 2.8.0(解析word时,需另外外依赖xmlbeans 5.1.1)】
  12. * 假定文档中的内容具有下列属性:
  13. * [授权人(签字):张三
  14. *  身份证号码: 322025199902256056 ]
  15. *  待提取的内容为张三  和 322025199902256056。张三和322025199902256056的值会变
  16. */
  17. public class TikaExtrator {
  18.     public static void main(String[] args) {
  19.         try {
  20.             //// 替换为实际的PDF文件路径 测试例子: 如 测试.xlsx.
  21.             InputStream input = TikaExtrator.class.getClassLoader().getResourceAsStream("综合信息查询授权书测试.docx");
  22.             String text = extractTextFromFile(input);
  23.             System.out.println("text: " + text);
  24.             String name = extractName(text);
  25.             String idNumber = extractIdNumber(text);
  26.             System.out.println("授权人姓名: " + name);
  27.             System.out.println("身份证号码: " + idNumber);
  28.         } catch (IOException e) {
  29.             e.printStackTrace();
  30.         }
  31.     }
  32.     /**
  33.      *
  34.      * @param inputStream
  35.      * @return
  36.      * @throws IOException
  37.      */
  38.     private static String extractTextFromFile(InputStream inputStream) throws IOException {
  39.         Tika tika = new Tika();
  40.         try {
  41.             return tika.parseToString(inputStream);
  42.         } catch (TikaException e) {
  43.             throw new RuntimeException(e);
  44.         }
  45.     }
  46.     private static String extractName(String text) {
  47.         Pattern pattern = Pattern.compile("授权人(签字)[::]([\\u4e00-\\u9fa5]+)");
  48.         Matcher matcher = pattern.matcher(text);
  49.         if (matcher.find()) {
  50.             return matcher.group(1);
  51.         }
  52.         return "";
  53.     }
  54.     private static String extractIdNumber(String text) {
  55.         Pattern pattern = Pattern.compile("身份证号码[::](\\d{18}|\\d{15})");
  56.         Matcher matcher = pattern.matcher(text);
  57.         if (matcher.find()) {
  58.             return matcher.group(1);
  59.         }
  60.         return "";
  61.     }
  62. }
复制代码
3、实行效果

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宁睿

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表