以编程方式识别PDF文件中扫描的文本
我有一个PDF文件,其中包含我们需要导入数据库的数据。这些文件似乎是打印的字母数字文本的pdf扫描。看起来像10磅。《新罗马时报》以编程方式识别PDF文件中扫描的文本,pdf,ocr,Pdf,Ocr,我有一个PDF文件,其中包含我们需要导入数据库的数据。这些文件似乎是打印的字母数字文本的pdf扫描。看起来像10磅。《新罗马时报》 是否有任何工具或组件可以让我识别和解析此文本?一个快速的谷歌搜索显示了这个有希望的结果。 您可以使用类似perl的模块来提取文本。并使用另一个工具将相关信息导入数据库 我确信有用于.NET的PDF组件,但我没有尝试过任何组件,因此我不知道什么是好的。在我曾经工作过的一家公司,我们使用ActivePDF toolkit取得了一些成功: 我想你至少需要标准版或专业版,
是否有任何工具或组件可以让我识别和解析此文本?一个快速的谷歌搜索显示了这个有希望的结果。
您可以使用类似perl的模块来提取文本。并使用另一个工具将相关信息导入数据库
我确信有用于.NET的PDF组件,但我没有尝试过任何组件,因此我不知道什么是好的。在我曾经工作过的一家公司,我们使用ActivePDF toolkit取得了一些成功:
我想你至少需要标准版或专业版,但他们有试用版,你可以看看它是否能满足你的需要。我最近发现了Python。如果PDF是打印文本的扫描,你自己很难做到(包括图像处理、字符识别等)。PDF通常会在内部以JPEG格式存储扫描的文档。您最好使用第三方工具(OCR工具)来实现这一点。您无法从PDF中提取扫描文本。你需要OCR软件。好消息是,您可以尝试一些开源应用程序,OCR路线很可能比使用PDF库提取文本更容易。查看Tesseract和GOCR。我曾经成功地将表格从PDF剥离到CSV。它基于,这是一个更通用的工具,包括。我只是把它包装成一个进程。从C#开始调用 如果你想找一些更DIY的东西,有一个库——Java的一个端口——和(是的,它说的是Java——但是他们有一个.NET版本)。这里有一些关于使用和来自C#的CodeProject文章 而且,如果你真的是一个受虐狂,你可以通过COM互操作调用Adobe。这是非常简单的,但我想互操作开销将是巨大的 编辑:在重新阅读问题和随后的答案后,很明显OP正在处理PDF中的图像。在这种情况下,您将需要提取图像(上面的PDF库可以相当容易地做到这一点),并通过OCR引擎运行它 我以前用过交互方式,效果不错。它是COM,因此通过interop从C#调用它也是一种非常好的方式:
其他人喜欢,但我有直接的经验。我听说过关于它的好消息和坏消息,所以我想这在很大程度上取决于你的源代码质量。如果我没有弄错,sheebz会问如何提取PDF字段并将数据加载到数据库中。你看了吗 我在我的一个博客上发布了关于解析pdf的帖子。点击此链接: 编辑:链接不再工作。以下引自 下面是基于网络上流行的例子。 这样做的目的是“读取”pdf文件并将其作为文本输出到 窗体中的富文本框控件。.NET库的PDFBox可以是 从sourceforge下载 您需要添加对IKVM.GNU.Classpath和PDFBox-0.7.3的引用。及 此外,还需要添加FontBox-0.1.0-dev.dll和PDFBox-0.7.3.dll 应用程序的bin文件夹。不知什么原因,我想不起来了 (可能是其中一个教程中的内容),我还将其添加到了bin中 IKVM.GNU.Classpath.dll 在旁注上,我刚从Keith那里拿到了我的“头先C#”(Head First C# (建议)来自亚马逊。这本书很酷!它真的是为你而写的 初学者。本版本涵盖VS2008和框架3.5 给你
根据马克·布兰克特的回答,我创建了一个包装 它的目标是.net标准1.6和.net框架4.5 用法:
using XpdfNet;
var pdfHelper = new XpdfHelper();
string content = pdfHelper.ToText("./pathToFile.pdf");
这是一个极好的资源列表。。谢谢如果PDF来自扫描仪,那么它实际上只是一个图像,PDFbox将无法从中获取文本:。此外,请参见@jm4的答案上面的链接不再有效-获取“无法打开与数据提供商的连接”错误消息如果PDF是扫描图像,PDFBOX将无法从PDF中获取文本:PDF可以是文本和图像的任意组合。如果已经是文本,则不需要ocr。
/* Marlon Ribunal
* Convert PDF To Text
* *******************/
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Printing;
using System.IO;
using System.Text;
using System.ComponentModel.Design;
using System.ComponentModel;
using org.pdfbox.pdmodel;
using org.pdfbox.util;
namespace MarlonRibunal.iPdfToText
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
void Button1Click(object sender, EventArgs e)
{
PDDocument doc = PDDocument.load("C:\\pdftoText\\myPdfTest.pdf");
PDFTextStripper stripper = new PDFTextStripper();
richTextBox1.Text=(stripper.getText(doc));
}
}
}
using XpdfNet;
var pdfHelper = new XpdfHelper();
string content = pdfHelper.ToText("./pathToFile.pdf");