gpt4 book ai didi

c# - iTextSharp 如何读取 PDF 文件中的表格

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

我正在将 PDF 转换为文本。我可以正确地从 PDF 中获取文本,但它的表格结构很复杂。我知道 PDF 不支持表格结构,但我认为有一种方法可以正确获取单元格。嗯,例如:

我想转换成这样的文本:

> This is first example.

> This is second example.

但是,当我将 PDF 转换为文本时,这些数据看起来像这样:

> This is This is

> first example. second example.

如何正确获取值?

--编辑:

以下是我如何将 PDF 转换为文本:

OpenFileDialog ofd = new OpenFileDialog();
string filepath;
ofd.Filter = "PDF Files(*.PDF)|*.PDF|All Files(*.*)|*.*";

if (ofd.ShowDialog() == DialogResult.OK)
{
filepath = ofd.FileName.ToString();

string strText = string.Empty;
try
{
PdfReader reader = new PdfReader(filepath);

for (int page = 1; page < reader.NumberOfPages; page++)
{
ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.LocationTextExtractionStrategy();
string s = PdfTextExtractor.GetTextFromPage(reader, page, its);

s = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(s)));
strText += s;
}
reader.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

最佳答案

要使我的评论成为实际答案...

您使用 LocationTextExtractionStrategy 进行文本提取:

ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.LocationTextExtractionStrategy();
string s = PdfTextExtractor.GetTextFromPage(reader, page, its);

此策略将它找到的所有文本从上到下排列成从左到右的行(实际上还考虑了文本行的角度)。因此,从包含多行内容的单元格的表格中提取文本显然不是您所需要的。

根据所讨论的文档,可以采用不同的方法:

  • 如果相关文档中的文本绘制操作已经符合文本提取所需的顺序,请使用 iText SimpleTextExtractionStrategy
  • 使用自定义文本提取策略,如果正确标记了文档表,该策略会使用标记信息。
  • 使用复杂的自定义文本提取策略,尝试从文本排列、线条路径或背景颜色中获取提示,以猜测表格单元格结构并逐个单元格地提取文本。

在这种情况下,OP 评论说他LocationTextExtractionStrategy 更改为 SimpleTextExtractionStrategy,然后它起作用了。

关于c# - iTextSharp 如何读取 PDF 文件中的表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40929677/

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