如何把online OCR的结果转换成word文档

要把string保存到word文档里,最简单的方法就是用Open XML SDK。这里分享下如何结合Dynamic .NET TWAIN OCR SDK和Open XML SDK,把online OCR的结果转换成word文档。

如何把online OCR的结果转换成word文档_第1张图片

参考原文:

Online OCR – Convert Images to Word, Text and PDF

下载

  • Dynamic .NET TWAIN

  • DocumentFormat.OpenXml 2.5.0

如何集成Open XML SDK到Online OCR应用

这里使用的OpenXML SDK 2.5是从NuGet获得的,官方下载可以访问Open XML SDK 2.5 for Microsoft Office。

添加Open XML引用:

如何把online OCR的结果转换成word文档_第2张图片

打开,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


你可能感兴趣的:(word,ocr,OpenXml)