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": "
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 记事本是一款基础文本编辑软件,无法直接提取eml文件附件。要提取eml文件附件,我们可以使用以下方法: 1. 使用专业的电子邮件客户端软件:如Outlook、Thunderbird等,打开eml文件,并通过软件自带的附件提取功能将附件保存到指定位置。 2. 使用第三方的eml文件阅读器和提取工具:市面上存在许多eml文件阅读器,它们通常都具备提取附件的功能。下载并安装合适的工具,打开eml文件,并通过工具提供的选项将附件保存到所需位置。 3. 手动提取eml文件是一种邮件标准格式,它实际上是一封邮件的源代码。通过用记事本打开eml文件,可以看到邮件内容和附件的原始数据。在源代码查找正确的附件字节流数据,并将其粘贴到新建的文件(注意保存文件时,需将后缀名更改为对应附件类型的扩展名)。这种方法相对复杂,需要一定的技术基础和耐心。 总的来说,使用记事本直接提取eml文件附件是不可行的,建议使用专业的邮件客户端软件或第三方工具来提取附件,以确保效率和附件的完整性。 ### 回答2: 要使用记事本提取.eml文件附件,你需要按照以下步骤进行操作。 首先,将.eml文件保存到你的计算机上。在保存时,确保.eml文件的保存位置易于访问,并且你知道文件的确切路径。 然后,右键单击.eml文件选择“打开方式”。在打开方式下拉菜单选择“记事本”。这将使用记事本打开.eml文件。 在记事本窗口,.eml文件的内容将以文本形式显示。你可以看到附件与邮件正文的文本内容一同显示。 要提取附件,首先找到附件的开始标记。通常,附件的开始标记以“Content-Disposition: attachment”开头,并且在该行文件名可以看到。 在找到附件的开始标记后,找到附件的结束标记。通常,附件的结束标记以“--”开头,并且在该行会有一个随机生成的标识符。 从开始标记到结束标记之间的文本就是附件的内容,这些文本是以二进制格式编码的。你需要将这些二进制文本提取出来并将其保存为附件。 为了提取附件,可以使用记事本的复制和粘贴功能。选择附件内容并复制,然后在一个新的记事本文档粘贴。 将粘贴的内容保存为一个新的文件,并将其扩展名更改为匹配附件的文件类型。例如,如果附件是图片文件,你可以将其扩展名更改为.png、.jpg等。 完成上述步骤后,你已成功提取了.eml文件的附件。你可以通过双击提取出的附件来打开和查看其内容。 ### 回答3: 使用记事本提取.eml文件附件的方法如下: 1. 首先,将.eml文件保存到计算机上的任意位置,确保你可以轻松找到这个文件。 2. 打开记事本工具,你可以通过在开始菜单搜索"记事本"来找到它。 3. 在记事本,点击"文件"选项,并选择"打开"。在文件对话框选择你保存的.eml文件,然后点击"打开"按钮。 4. .eml文件将在记事本被打开,并以文本格式显示。 5. 请注意,.eml文件是一种邮件文件,可能包含邮件主题、发件人、收件人、正文和附件等信息。你需要在文件找到附件的位置。 6. 通常情况下,附件会以一组编码字符表示,类似于"Content-Type: application/octet-stream; name="example.jpg""的格式,这表示一个名为"example.jpg"的附件。 7. 在找到附件的位置后,你可以将这些编码字符复制到一个新的文本文件,并将文件保存为相应的格式。例如,如果附件是一个.jpg图片,可以将该文本文件保存为"example.txt"。 8. 最后,将保存的文本文件后缀名从.txt更改为相应格式的后缀名,例如.jpg,以恢复附件的原始格式。 需要注意的是,记事本只能提取和查看.eml文件的文本内容,对于其他类型的附件(如图片、文档、压缩包等)可能无法直接查看。对于这些类型的附件,你可以使用相应的应用程序或提取工具进行查看和提取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值