上传附件判断word、excel、txt等文档中是否含有敏感词如身份证号,手机号等,其它检测如PDF,图片(OCR)等可以自行扩展。
互联网项目中,展示的数据中不能包含个人信息等敏感信息。判断word中是否包含手机号,word正文中是否包含身份证号等敏感信息,通过正则表达式判断匹配手机号,身份证号,以下做为参考。会出现碰撞错误,碰撞不准确等情况,不在本文范围。
开发语言C#,框架asp.net webform。由于上传文件是做的判断,所以这里是判断数据流HttpPostedFile postedFile中的内容。通过load本地文件,本文不做过多介绍。 一、word校验身份证号,手机号
获取word中内容最初用的是npoi插件,office的插件导入导出以前用的比较多,npoi只获取docx文档文本,npoi获取doc后缀有问题,又找的Spire.Doc。可以都使用后者,笔者只简单测试了doc后缀,其它复杂情况没具体测试。有时间的推荐Spire,因为附件中pdf也是一个大项,刚好有对应的using Spire.Pdf;
using NPOI.XWPF.UserModel;
using Spire.Doc;
using Spire.Doc.Documents;
public class WordToTextConvert
{
/// <summary>
/// docx提取成纯文本
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
public static string ExtractTextFromWord(Stream wordFileStream,string fileExt)
{
using (wordFileStream)
{
XWPFDocument doc = new XWPFDocument(wordFileStream);
using (StringWriter writer = new StringWriter())
{
string text = "";
foreach (var para in doc.Paragraphs)
{
text += para.Text+" ";
}
foreach (XWPFTable table in doc.Tables)
{
foreach (XWPFTableRow row in table.Rows)
{
foreach (XWPFTableCell cell in row.GetTableCells())
{
text += cell.GetText() + " ";
}
}
text += "\r\n";
}
return text;
}
}
}
/// <summary>
/// doc后缀
/// </summary>
/// <param name="wordFileStream"></param>
/// <param name="fileExt"></param>
/// <returns></returns>
public static string ExtractTextFromWordDoc(Stream wordFileStream, string fileExt)
{
Spire.Doc.Document doc = new Spire.Doc.Document(wordFileStream);
Spire.Doc.Table table = doc.Sections[0].Tables[0] as Table;