按位置将一组字母聚类到表格中

Clustering a set of letters into a table by position

提问人:JohnDiGriz 提问时间:3/21/2023 更新时间:3/21/2023 访问量:27

问:

我有一组位于平面上的字母(对于每个字母,我知道其角点的坐标,字符串可以被视为平行四边形)。我知道字符串构成了一个表,但我不知道表有多少行或列,也不知道单元格的大小。此外,字母和表格还具有以下属性

  • 字母组成单词
  • 每个单词的末尾都有一个空格,或者是其行中的最后一个单词
  • 表的每个单元格要么包含一个字符串(可以由多个单词组成),要么完全为空
  • 字符串中单词之间的间距可以大于或小于空格的宽度。
  • 单个表格行中的字母并不都具有相同的 Y 坐标,但倾斜永远不会太大(即给定行中每个字母的每个角的 Y 坐标都高于下一行中每个字母的每个角的 Y 坐标)
  • 单元格从不跨越两行
  • 某些单元格跨越多个列 - 在这种情况下,该单元格的内容可以放在任何跨区列中,最好是一致的,但不一定一致(即始终放在最左边或总是放在最右边的跨区列中)
  • 空单元格中没有任何字母(即没有可用于识别空单元格的“空格”字母)
  • 列中每个单元格的内容通常都向左对齐,或者全部向右对齐,尽管它们并不总是具有相同的最左边的 X 坐标,并且某些单元格的内容不遵循其列的对齐方式(相反,它们根本没有对齐,因此字符串的两个边缘都在单元格中间的某个位置)。
  • 字符串的实际内容无助于确定表的结构。

那么问题来了,给定一组字母及其坐标,我怎样才能正确地将它们划分成一个表格?

例如:

同上 名字 数字 1 号码 2 号码 3
GJ32型 巴勃罗·迭戈·何塞·弗朗西斯科·德·保拉·胡安·内波穆切诺·玛丽亚·德洛斯·雷梅迪奥斯·西普里亚诺 24.5 443423 332.68
G33!!:L 简D0~ 24 17 44:!4O .68
** 鲍勃 Sm1th 34,7 I.oo 所以

假设字母像这样组成表格,但我只知道字母本身和它们的坐标,但不知道表格的大小。

具体来说,我正在解析一个由表格扫描组成的 PDF 文件,并尝试将这些扫描转换为 Excel 表格(每个 PDF 页面一个 Excel 工作表),但是有问题的 PDF 文件的构建方式存在很多问题:

  • 文本是用文本识别软件生成的,经常会出现小数点缺失、符号识别错误(没有可靠的一对一对应关系)等问题。因此,我不能依赖字符串的内容
  • 文本并不总是按阅读顺序绘制,而且绘制的顺序会因页面而异
  • 单词和字符串并不总是绘制在一起,通常 PDF 显示单词的一部分,调整文本矩阵,并显示同一单词的另一部分
  • 文档中混合了多种类型的表。
  • 有时,一个表跨越多个页面,因此实际上只有一个页面包含标题行。而且表格的对齐方式不匹配,所以即使我能够找到一个标题行(由于第一个问题,这是有问题的),我也不能使用它的坐标来正确地分组另一个页面上的字符串

我正在使用 C# 和 PdfPig,但这个问题在很大程度上与语言无关

PDF 聚类分析 pdf-解析

评论

0赞 JohnDiGriz 3/21/2023
@KJ这里的任务是创建一个自动解析系统,那么任何需要人工输入的解决方案都不可用。此外,我们不允许安装任何未经授权的软件,并且我们没有对任何 PDF 编辑器的授权

答: 暂无答案