【问题标题】:c# PDF to Bmp for freec# PDF 转 Bmp 免费
【发布时间】:2013-07-09 21:39:29
【问题描述】:

我正在编写一个使用 OCR (tessnet2) 扫描图像文件并提取某些信息的程序。在我发现要从 Exchange 服务器扫描 PDF 附件之前,这很容易。

我正在处理的第一个问题是如何将我的 PDF 转换为 BMP 文件。就我目前所知的 TessNet2 而言,它只能读取图像文件——特别是 BMP。所以我现在的任务是将不确定大小(2 - 15 页)的 PDF 转换为 BMP 图像。完成后,我可以使用我已经用 TessNet2 构建的代码轻松扫描每个图像。

我见过一些使用 Ghostscript 来完成这项任务的东西 - 我只是想知道是否还有其他免费的解决方案,或者你们中的某个优秀的人是否可以给我一个关于如何使用 Ghostscript 完成这项任务的速成课程。

【问题讨论】:

  • 为什么不直接使用 Ghostscript 或 iTextSharp,或 SharpPdf 或其他一些免费的 PDF 库来打开 pdf 并直接获取文本?
  • 因为 PDF 是我们的传真机接收到的图像,作为 TIFF 文件扫描到我们的系统中,然后打包为 PDF。所以我必须使用 OCR 来读取信息……这有时非常粗略。
  • 我相信它们都不是免费的商业用途。我是 Ghostscript 的新手,它对商业应用程序免费吗?这个链接有很多术语,我觉得他们中的大多数人认为它对商业应用程序不是免费的 - artifex.com/page/licensing-information.html 有什么想法吗?

标签: c# pdf ghostscript bmp tessnet2


【解决方案1】:

您也可以使用ImageMagick。而且它是完全免费的!无需试用或付款。

只需从here 下载 ImageMagick .exe。安装它并在here 中下载 NuGet 文件。

有密码!希望我有所帮助! (尽管这个问题是 6 年前提出的......)

程序:

     using ImageMagick;
     public void PDFToBMP(string output)
     {
        MagickReadSettings settings = new MagickReadSettings();
        // Settings the density to 500 dpi will create an image with a better quality
        settings.Density = new Density(500);

        string[] files= GetFiles();
        foreach (string file in files)
        {
            string fichwithout = Path.GetFileNameWithoutExtension(file);
            string path = Path.Combine(output, fichwithout);
            using (MagickImageCollection images = new MagickImageCollection())
            {
                images.Read(fich);
                foreach (MagickImage image in images)
                {
                    settings.Height = image.Height;
                    settings.Width = image.Width;
                    image.Format = MagickFormat.Bmp; //if you want to do other formats of image, just change the extension here! 
                    image.Write(path + ".bmp"); //and here!
                }
            }
        }
    }

函数GetFiles()

    public string[] GetFiles()
    {
        if (!Directory.Exists(@"your\path"))
        {
            Directory.CreateDirectory(@"your\path");
        }

        DirectoryInfo dirInfo = new DirectoryInfo(@"your\path");
        FileInfo[] fileInfos = dirInfo.GetFiles();
        ArrayList list = new ArrayList();
        foreach (FileInfo info in fileInfos)
        {
            if(info.Name != file)
            {
                // HACK: Just skip the protected samples file...
                if (info.Name.IndexOf("protected") == -1)
                    list.Add(info.FullName);
            }

        }
        return (string[])list.ToArray(typeof(string));
    }

【讨论】:

  • 我相信,它仍然需要在 PC 上安装 GhostScript 才能打开 PDF 文件:imagemagick.org/script/formats.php
  • 该代码适用于我的 PDF 文件,我不需要 GhostScript……但它对于这类工作来说是一个有用的软件。
  • 谢谢索菲亚!您可能错过了两件事,您的第二个函数和 fich 中的文件是什么?再次感谢!
  • 还有@VDN,是的,GhostScript 是必需的,因为我对其进行了测试。
【解决方案2】:

找到一篇关于将 PDF 转换为图像的 CodeProject 文章:

http://www.codeproject.com/Articles/57100/Simple-and-Free-PDF-to-Image-Conversion

【讨论】:

  • Adobe Reader XI EULA 声明“3.2 服务器使用。本协议不允许您在计算机文件服务器上安装或使用本软件。”
  • 根据作者在该教程中的cmets,显然他正在使用Acrobat。
  • 这不是免费的。它需要安装 Acrobat Professional。这不是免费的。
  • 根据文章本身:“您的系统上必须安装“Adobe Acrobat Reader””。阅读器是免费版本。如果作者对要求的内容有误,您应该对该文章发表评论
猜你喜欢
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
  • 2011-01-25
  • 2016-07-03
  • 1970-01-01
  • 2011-10-10
相关资源
最近更新 更多