gpt4 book ai didi

c# - 使用 Tesseract ocr 时调用的目标抛出异常

转载 作者:太空宇宙 更新时间:2023-11-03 22:56:44 25 4
gpt4 key购买 nike

我正在编写一个使用 Tesseract 从图像中提取文本的程序。该程序应从目录中提取所有图像并将它们一张一张地放入图片框中,然后从中提取文本。我已经从这个链接下载了一个英语训练数据并将它放在 Debug 文件夹中 https://github.com/tesseract-ocr/tessdata/blob/master/eng.traineddata
异常(exception)是:这是我的代码:调用的目标抛出了异常。
并且 catch 中指示的内部异常是:无法找到平台 x86 的库“liblept172.dll”。

private void button1_Click(object sender, EventArgs e)
{
Image image;
string[] images = Directory.GetFiles("E:\\Omar Project\\New", "*.png");
for (int i = 0; i < images.Length;i++)
{
image = Image.FromFile(images[i]);
pictureBox1.Image = image;
//ocr = new TesseractEngine(@"tessdata", "eng", EngineMode.Default);
using (var engine = new TesseractEngine("E:\\Omar Project\\Extracting Text From Image Using Microsoft Office\\Extracting Text From Image Using Microsoft Office\\bin\\Debug\\eng.traineddata", "eng", EngineMode.Default))
{
using(var img=Pix.LoadFromFile(images[i]))
{
using(var page=engine.Process(img))
{
richTextBox1.Text += page.GetText();
}
}
}
}

}

最佳答案

在项目目录(.csproj 文件所在的位置)中创建文件夹“x64”或“x86”,并将 liblept1760.so 和 libtesseract400.so 复制到其中。现在您应该能够在 visual studio 中看到您的两个文件。您必须将两个文件的“复制到输出目录”(该属性用英语这样称呼吗?)设置为“始终”

确保你的容器中安装了以下包

apt-get install -y libgif7 libjpeg62 libopenjp2-7 libpng16-16 libtiff5 libwebp6

否则 liblept 的 dlopen 命令将失败,您将收到您提到的错误消息。

如果您的容器中没有安装 liblept 包,而只是将 .so 文件复制到 x64 目录中,则 libtesseract 的打开命令将失败。

要解决此问题,您必须创建指向您的 liblept 共享对象的符号链接(symbolic link)。

只需在您的容器/Dockerfile 中运行

ln -s /app/x64/liblept1760.so /usr/lib/x86_64-linux-gnu/liblept.so.5

确保使用正确的源路径。对于默认的 asp.net 核心 docker 图像和我描述的方式/app/x64/liblept1760.so 应该可以工作。

关于c# - 使用 Tesseract ocr 时调用的目标抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45038917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com