C# 文件搜索过程中如何提取office文件,wps,pdf,html,eml等格式的文件正文

该博客介绍了一种C#组件,用于从Office、WPS、PDF、HTML、EML等文件中智能提取文本内容,适用于信息检索、机器学习等领域的底层支持。通过简单的步骤,包括下载DLL、调用函数,开发者可以实现文件内容搜索和正文提取,免费版可提取大部分文本。
摘要由CSDN通过智能技术生成

在文件数据挖掘处理技术中,如何从文本数据中抽取有价值的信息和知识是一个重要的数据挖据分支,是机器学习、自然语言处理、数理统计的基础技术之一,是信息检索,机器学习,AI智能等高端技术的的底层技术支持之一。

本组件智能分析提取其他各种文件中文本,为自然语言信息检索,机器学习等高端技术提供底层支持的技术组件,是Lucene/CLucene, Elasticsearch, Sphinx等全文检索工具,OA, ERP, CRM,网盘,文件管理等其他系统提供文件摘要及搜索前置服务。同时也可以为安全网关,邮件内容监控,内网安全等系统提供文件搜索及监控服务底层技术支持。   

组件提供C#使用组件对大量文件进行文件内容的搜索,为Lucene.Net等提供底层技术支持。系统调用简单方便,效率高。

以下几个步骤即可:

1:  解压直接打开graccvsTest工程

2:  到官网下载graccvs64.dll保存到EXE执行程序所在文件夹下, DLL下载地址

3:  代码中从64行开始定义函数, 从258行是文件取正文示例, testToTextFile函数可以直接输入文件名称函数提取正文并保存为文本文件,  testToString输入rft, html, pdf等文件名称放回字符串. 示例中还提供直接下载HTTP文件并提取正文的方法,使用超级简单.

4: 免费版可以提取50%-80%的文本,基本够用了。

5:  可以下载完整工程包直接测试,   工程下载地址

6:  以下是代码

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Threading;


namespace graccvsTest
{
    public class DllInvoke
    {   
        [DllImport("kernel32.dll")]
        private extern static IntPtr LoadLibrary(string path);

        [DllImport("kernel32.dll")]
        private extern static IntPtr GetProcAddress(IntPtr lib, string funcName);

        [DllImport("kernel32.dll")]
        private extern static bool FreeLibrary(IntPtr lib);
        
        private IntPtr hLib;
        public DllInvoke(String DLLPath)
        {
            hLib = LoadLibrary(DLLPath);
        }

        ~DllInvoke()
        {
            if (hLib != null)
            {
                FreeLibrary(hLib);
            } 
        }
         
        public Delegate Invoke(string APIName, Type t)
        {
            if (hLib != null)
            {
                IntPtr api = GetProcAddress(hLib, APIName);
                return (Delegate)Marshal.GetDelegateForFunctionPointer(api, t);
            }
            else
            {
                return null;
            }
        } 
    }
      
    class Program
    {
        //--------------------------------函数定义--------------------------------
        // 加载DLL,设置动态库需要的临时文件夹,且对此文件夹要有读写权限
        public delegate void LOAD(IntPtr tempPathPtr);

        /*
          注册软件:
          方式1:输入参数,corp为公司名称licText为注册码
          方式2:把授权文件grauth.lic保存到动态库相同文件夹,调用TAuth函数(corp, licText都为空)系统自动加载grauth.lic
          返回值:
            0:免费版本许可为空
            1:许可正常
            2:序列号(公司授权名称)错误
            3:加密数据格式错误
            4:许可过期
            5:许可验证错误
            6:无效的许可
            7:未知错误

          注1:如果注册失败,系统变为免费版本
          注2:免费版也需要调用此函数,corp和licText都为空
        */
        public delegate Int32 AUTH(IntPtr corp, IntPtr licText);

        // 提供文件正文,并保存到目标文件
        // inFilePtr输入文件指针, outFilePtr为TXT目标文件文件指针
        public delegate Int32 TOTEXTFILE(IntPtr inFilePtr, IntPtr outFilePtr);
        // 提供文件正文
        // inFilePtr输入文件指针, 返回UTF-8编码字符串数据指针(此指针需要使用FREESTRING函数释放内存)
        public delegate IntPtr TOSTRING(IntPtr inFilePtr);
        // 释放TOSTRING等函数的返回指针
        public delegate void FREESTRING(IntPtr p);
        // 得到最后的错误信息
        public delegate IntPtr LASTERR();

        // 提取Http/Https文件,返回字符串数据指针
        // url=Http/Https地址
        // fileExt=文件类型(比如:".pdf"),
        // timeout=超时设置,超过此数值系统终止下载文件。单位为毫秒,默认为0(等待文件下载直到完成)
        // httpParams=JSON格式header数据和cookie数据,默认为空
        /*   
          JSON格式如下:
          {"headers":
          [{名称1: 值1},{名称2: 值2},...],
          "cookies":[
          {"name": 名称(字符串), "value": 值(字符串), "expires": 有效期(整数,单位毫秒),
          "path": 路径(字符串), "domain": 域名(字符串)},
          {"name": 名称(字符串), "value": 值(字符串), "expires": 有效期(整数,单位毫秒),
          "path": 路径(字符串), "domain": 域名(字符串)}
          ...
          ]}
          例如:
          {"headers":[{"client_id": "g01x9"}, {"client_secret": "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值