如何从pdf读取表并将其转换为xml / html?

时间:2018-05-28 13:56:31

标签: c# html ocr

这是pdf file

如何将表格(如此类似)转换为html表格(并将其保存为txt文件)

<table frame="box">
<colgroup>
<col span="5"/>
</colgroup>
<tbody>
<tr>
<td>Y+z</td>
<td>Avg.</td>
<td>X2</td>
</tr>
<tr>
<td>Abc</td>
<td rowspan="2">15.236</td>
<td>33</td>
</tr>
<tr>
<td>Yko</td>
<td>14</td>
</tr>
<tr>
<td>Ink</td>
<td>Pol</td>
<td>IUk</td>
</tr>
<tr>
<td>Ll adl</td>
<td rowspan="2">6369</td>
<td>20</td>
</tr>
<tr>
<td>Qwwe</td>
<td rowspan="2">330</td>
</tr>
<tr>
<td>Tyu</td>
<td>12</td>
</tr>
</tbody>
</table>

该表可能还有rowspan和colspan。 提前致谢.. 这就是我所做的

static void Main(string[] args)
{
    string ocrText = GetTextFromPDF(@"C:\Temp\Y.pdf");
    File.WriteAllText(@"C:\Temp\Y.txt",ocrText);
    Console.WriteLine("Done");
    Console.ReadLine();
}
public static string GetTextFromPDF(string path)
{
    StringBuilder text = new StringBuilder();
    using (PdfReader reader = new PdfReader(path))
    {
        for (int i = 1; i <= reader.NumberOfPages; i++)
        {
            text.Append(PdfTextExtractor.GetTextFromPage(reader, i));
        }
    }

    return text.ToString();
}

但是它读取了pdf文件的所有内容,我不知道如何进一步处理它以获得所需的结果。 有人能帮助我吗?

2 个答案:

答案 0 :(得分:0)

你在技术上非常难以提问。

PDF格式是打印系统的特定格式,或更好:表示PDF的二进制格式是我们所说的排版格式。

通常,很难解析PDF格式以获取可以处理的数据。

这是因为文本处理器会以混乱的方式看到PDF的内部数据,实际上它们是针对特殊应用程序编写的,例如PDF查看器。

有几种工具试图从PDF中提取数据,但通常它们不是100%可靠,因为它们基于图像识别。

因此,如果您需要提取数据,使用PDF并不是一件好事。如果您可以获得生成PDF的源文档,那将是完美的。例如降价或Excel表格。

如果你真的坚持并且你满足于可能不稳定的数据,你可以尝试this

答案 1 :(得分:0)

你可以尝试SautinSoft.PdfFocus.dll来做这类事情,下面是一个将pdf转换为xml的示例代码:

SautinSoft.PdfFocus f = new SautinSoft.PdfFocus();
f.XmlOptions.ConvertNonTabularDataToSpreadsheet = false;
f.OpenPdf(@"D:\XY.pdf");
f.ToXml(@"D:\XY.xml");

祝你好运:)