反派扮演专业户 發表於 2021-12-16 11:01:00

C# 扫描识别图片中的文字(.NET Framework)

<h1><span style="font-size: 18px">环境配置</span></h1>
<p>本文以C#及VB.NET代码为例,介绍如何扫描并读取图片中的文字。</p>
<p>本次程序环境如下:</p>
<ul>
<li>Visual Studio版本要求<strong>不低于2017</strong></li>
<li>图片扫描工具:Spire.OCR for .NET</li>
<li>图片格式:png(这里的图片格式支持JPG、PNG、GIF、BMP、TIFF等格式)</li>
<li>扫描的图片文字:中文(另外可支持英语、日语、韩语、德语、法语等)</li>
<li>.NET Framework 4.6.1</li>
</ul>
<p>下面是具体步骤及操作方法。</p>
<h1><span style="font-size: 18px">操作步骤</span></h1>
<p><strong>步骤1.</strong> 在 Visual Studio 中创建一个 .NET Framework 控制台应用程序。</p>
<p><img src="https://img2020.cnblogs.com/blog/706090/202112/706090-20211216103743767-489551770.png"></p>
<p>&nbsp;</p>
<p><strong>步骤2.</strong> 鼠标右键点击程序项目属性,将目标平台设置为<strong> x64</strong>。</p>
<p><em>由于 Spire.OCR for .NET 仅支持 64 位操作系统系统,所以</em><span style="color: rgba(255, 0, 0, 1)"><strong><em>必须</em></strong></span><em>执行此步骤。</em></p>
<p><img src="https://img2020.cnblogs.com/blog/706090/202112/706090-20211216103912893-1208906443.png"></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/706090/202112/706090-20211216103924256-1087216002.png"></p>
<p id="1639622291463">&nbsp;</p>
<p><strong>步骤3.</strong> 在VS程序中安装Spire.OCR for .NET。(<strong>★ 推荐通过Nuget安装</strong>)</p>
<p>在【解决方案资源管理器】中,鼠标右键点击【引用】,选择【管理NuGet程序包】</p>
<p><img src="https://img2020.cnblogs.com/blog/706090/202112/706090-20211216104027731-1142760548.png"></p>
<p>&nbsp;</p>
<p>在打开的界面中,点击 【浏览】选项卡,在搜索框中输入【Spire.OCR】。点击【安装】</p>
<p><img src="https://img2020.cnblogs.com/blog/706090/202112/706090-20211216104431559-2121031693.png"></p>
<p id="1639622598782"><img src="https://img2020.cnblogs.com/blog/706090/202112/706090-20211216104346485-1838419468.png"></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/706090/202112/706090-20211216104354862-1887543372.png"></p>
<p>&nbsp;</p>
<p align="left"><strong>步骤4</strong>. 安装完成后,找到安装路径下,默认生成的<strong>packages</strong>文件夹,复制该文件夹路径下的<strong> 6 个dll</strong>文件:</p>
<p align="left"><em>F:\VS2017Project\ScanImageAndReadCharacter_OCR\<strong>packages\Spire.OCR.1.8.0\runtimes\win-x64\native</strong></em></p>
<p>拷贝到VS程序项目运行路径下:</p>
<p><em>F:\VS2017Project\ScanImageAndReadCharacter_OCR\ScanImageAndReadCharacter_OCR\<strong>bin\Debug</strong></em></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/706090/202112/706090-20211216104403921-383096291.png"></p>
<p>&nbsp;</p>
<h3>调用API接口扫描并读取图片中的文字</h3>
<p>完成以上步骤后,执行如下程序代码来读取图片上的文字:</p>
<p><strong>C#</strong></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> Spire.OCR;
</span><span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.IO;

</span><span style="color: rgba(0, 0, 255, 1)">namespace</span><span style="color: rgba(0, 0, 0, 1)"> ScanImageAndReadCharacter_OCR
{
    </span><span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> Program
    {
      </span><span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span> Main(<span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">[] args)
      {
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">创建一个OcrScanner类的实例</span>
            OcrScanner scanner = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> OcrScanner();

            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">调用OcrScanner.Scan(string fileName)方法扫描图片上的文字</span>
            scanner.Scan(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">image.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            </span><span style="color: rgba(0, 0, 255, 1)">string</span> text =<span style="color: rgba(0, 0, 0, 1)"> scanner.Text.ToString();

            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">保存扫描获取的文字为.txt文档</span>
            File.WriteAllText(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">output.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, text);
            System.Diagnostics.Process.Start(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">output.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
      }
    }
}</span></pre>
</div>
<p><strong>VB.NET</strong></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">Imports</span><span style="color: rgba(0, 0, 0, 1)"> Spire.OCR
</span><span style="color: rgba(0, 0, 255, 1)">Imports</span><span style="color: rgba(0, 0, 0, 1)"> System.IO

</span><span style="color: rgba(0, 0, 255, 1)">Namespace</span><span style="color: rgba(0, 0, 0, 1)"> ScanImageAndReadCharacter_OCR
    </span><span style="color: rgba(0, 0, 255, 1)">Class</span><span style="color: rgba(0, 0, 0, 1)"> Program
      </span><span style="color: rgba(0, 0, 255, 1)">Private</span> <span style="color: rgba(0, 0, 255, 1)">Shared</span> <span style="color: rgba(0, 0, 255, 1)">Sub</span> Main(args <span style="color: rgba(0, 0, 255, 1)">As</span> <span style="color: rgba(0, 0, 255, 1)">String</span><span style="color: rgba(0, 0, 0, 1)">())
            </span><span style="color: rgba(0, 128, 0, 1)">'</span><span style="color: rgba(0, 128, 0, 1)">创建一个OcrScanner类的实例</span>
            <span style="color: rgba(0, 0, 255, 1)">Dim</span> scanner <span style="color: rgba(0, 0, 255, 1)">As</span> <span style="color: rgba(0, 0, 255, 1)">New</span><span style="color: rgba(0, 0, 0, 1)"> OcrScanner()

            </span><span style="color: rgba(0, 128, 0, 1)">'</span><span style="color: rgba(0, 128, 0, 1)">调用OcrScanner.Scan(string fileName)方法扫描图片上的文字</span>
            scanner.Scan(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">image.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
            </span><span style="color: rgba(0, 0, 255, 1)">Dim</span> text <span style="color: rgba(0, 0, 255, 1)">As</span> <span style="color: rgba(0, 0, 255, 1)">String</span> =<span style="color: rgba(0, 0, 0, 1)"> scanner.Text.ToString()

            </span><span style="color: rgba(0, 128, 0, 1)">'</span><span style="color: rgba(0, 128, 0, 1)">保存扫描获取的文字为.txt文档</span>
            File.WriteAllText(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">output.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, text)
            System.Diagnostics.Process.Start(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">output.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
      </span><span style="color: rgba(0, 0, 255, 1)">End Sub</span>
    <span style="color: rgba(0, 0, 255, 1)">End Class</span>
<span style="color: rgba(0, 0, 255, 1)">End Namespace</span></pre>
</div>
<p>图片扫描读取结果:</p>
<p><img src="https://img2020.cnblogs.com/blog/706090/202112/706090-20211216105245151-371103198.png"></p>
<p>&nbsp;</p>
<h3>注意事项</h3>
<p>1.仅支持64位平台及系统</p>
<p>2.仅1.8.0及以后版本支持.NET Framework</p>
<p>&nbsp;</p>
<p>※&nbsp;相关文章阅读推荐:C# 扫描并读取图片中的文字(.NET Core)</p>
<p>&nbsp;</p>
<p>原创内容,转载务必注明出处!!!!!!!!!!!!!!!!!!!</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/Yesi/p/15696920.html
頁: [1]
查看完整版本: C# 扫描识别图片中的文字(.NET Framework)