要把string保存到word文档里,最简单的方法就是用Open XML SDK。这里分享下如何结合Dynamic .NET TWAIN OCR SDK和Open XML SDK,把online OCR的结果转换成word文档。
参考原文:
Online OCR – Convert Images to Word, Text and PDF
下载
如何集成Open XML SDK到Online OCR应用
这里使用的OpenXML SDK 2.5是从NuGet获得的,官方下载可以访问Open XML SDK 2.5 for Microsoft Office。
添加Open XML引用:
打开,DoOCR.aspx.cs找到代码:
byte [] content = OCRMode.OCR(inputBuffer, strLanguage, Convert.ToInt32(strFormat));
结果是byte array,把它转换成string:
System.Text.Encoding.ASCII.GetString(content)
创建函数SaveToWord,传入文件路径和OCR结果:
private void SaveToWord(string filepath, string ocrResult) { using (WordprocessingDocument doc = WordprocessingDocument.Create(filepath, DocumentFormat.OpenXml.WordprocessingDocumentType.Document)) { MainDocumentPart mainPart = doc.AddMainDocumentPart(); mainPart.Document = new Document(); Body body = mainPart.Document.AppendChild(new Body()); Paragraph para = body.AppendChild(new Paragraph()); Run run = para.AppendChild(new Run()); string returnValue = FilterInvalidXmlChars(ocrResult); run.AppendChild(new Text(returnValue)); } }
这样OCR结果就可以保存到word文档里了。要注意的是,结果里可能包含了无效的XML字符,所以还需要对结果做过滤处理:
public static string FilterInvalidXmlChars(string text) { // answer from http://stackoverflow.com/questions/397250/unicode-regex-invalid-xml-characters/961504#961504 string re = @"(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F\uFEFF\uFFFE\uFFFF]"; return Regex.Replace(text, re, ""); }
看下视频demo:
更多信息可以参考Word processing (Open XML SDK)
源码
https://github.com/DynamsoftRD/online-ocr
git clone https://github.com/DynamsoftRD/online-ocr.git
时间: 2024-10-17 09:59:27