【发布时间】:2019-10-03 09:15:37
【问题描述】:
我有一个asp.net Core 2.0 C# 应用程序,它读取/解析 PDF 文件并获取文本。在此我想读取具有特定标签名称的特定值。您可以看到下图 我想获取值171857,即Invoice 数字并将其存储在数据库中。
我已尝试使用以下代码使用iTextSharp 阅读 pdf。
using (PdfReader reader = new PdfReader(fileName))
{
StringBuilder sb = new StringBuilder();
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
for (int page = 0; page < reader.NumberOfPages; page++)
{
string text = PdfTextExtractor.GetTextFromPage(reader, page + 1, strategy);
if (!string.IsNullOrWhiteSpace(text))
{
sb.Append(Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(text))));
}
}
var pdfText = sb.ToString();
}
在pdfText 变量中,我将从 pdf 中获取所有文本内容,但似乎这不是获取发票编号的正确方法。有没有其他方法可以通过标签名称从 pdf 中读取特定内容,例如我们将提供标签名称 Invoice 并返回值 171857 作为其他 3rd 方 pdf 阅读器库的示例?
任何帮助或建议将不胜感激。
谢谢
【问题讨论】:
-
话虽如此,很可能您在 PDF 中的“标签”及其“值”只是碰巧彼此非常接近的文本。要么是表单字段值,要么是任意注释,要么是页面内容的一部分(直接或间接);此外,任何一个都可以绘制为位图图像或矢量图像,或者使用文本绘制指令,无论是否具有足够的文本提取信息。因此,请澄清它们的性质,因为提取方法取决于此。
-
@Ranadheer 正如上面 cmets 中所解释的,这个问题有些不清楚,需要进行一些澄清。 OP未能澄清,但可能你是赏金开启者。特别是解释标签和值的性质或在此处提供示例 PDF 代表。
-
在我的工作中,我们使用了 Google Cloud Vision API 的 OCR。 PDF 被转换为字符串。他们我们找到了模式。在你的情况下,我会在关键词“Invoce”和“Date”之间寻找一个数字。您可以分析您的真实文本并找到更好的模式。