【问题标题】:what is the best way to extract filled data from a static form?从静态表单中提取填充数据的最佳方法是什么?
【发布时间】:2017-03-20 17:34:43
【问题描述】:

我有一些带有初始填充数据的联邦 pdf 表格。比如说i765,我有这个表格的数据以文本格式提供,并正确填写了详细信息。如何以最少的解析从此表单中提取数据。让我们说如何编写一个识别“差异”的脚本,它本身就是填充的信息。

例如:如果一行包含..

SSN:(空白),实际填写的表格有SSN:ABC!@#456

所以填写的信息只不过是 ABC!@#456 这只是字符串之间的区别。有没有我可以遵循的已知方法。任何指针都非常感谢。

【问题讨论】:

  • 如果您有空白表单和已填写表单的文本版本,请在 shell 中尝试:diff BlankFile.txt FileWithData.txt。这能满足你的需要吗?如果是这样,请编写一个迭代两个文本文件并比较数据的 Scala 程序。如果您有困难,请在此处展示您的工作,我们会为您提供帮助。

标签: scala parsing text-processing text-parsing


【解决方案1】:

如果我们谈论的是 Linux 工具,那么您可以尝试各种解决方案,例如:

$ join -t"=" -a1 -o 0,2.2 <(sort emptyform) <(sort filledform)  # "=" is used as delimiter

甚至没有排序要求的awk:

$ awk 'BEGIN{FS=OFS="="}NR==FNR{a[$1]=$2;next}{if ($1 in a) {print;delete a[$1]}} \
END{print "\n Missing fields:";for (i in a) print i,a[i]}' empty filled

测试:

cat <<EOF >empty
Name=""
Surname=""
Age=""
Address=""
Kids=""
Married=""
EOF

cat <<EOF >filled
Name="George"
Surname="Vasiliou"
Age="42"
Address="Europe"
EOF
join -t"=" -a1 -o 0,2.2 <(sort empty) <(sort filled)
#Output:
Address="Europe"
Age="42"
Kids=
Married=
Name="George"
Surname="Vasiliou"

awk 输出

awk 'BEGIN{FS=OFS="="}NR==FNR{a[$1]=$2;next}{if ($1 in a) {print;delete a[$1]}} \
END{print "\nnot completed fields:";for (i in a) print i,a[i]}' empty filled

Name="George"
Surname="Vasiliou"
Age="42"
Address="Europe"

not completed fields:
Married=""
Kids="" 

特别是在 awk 中,如果您从 {if ($1 in a) {print;delete a[$1]}} 中删除打印,则 END 部分将只为您打印出缺少的字段。

另一个具有漂亮视觉界面的替代方法是使用 diff 实用程序:

$ diff -y <(sort empty) <(sort filled)

Address=""                            | Address="Europe" 
Age=""                                | Age="42"  
Kids=""                               | Name="George" 
Married=""                            | Surname="Vasiliou"                                              
Name=""                               <  
Surname=""                            <  

【讨论】:

  • 已更新。让我知道上述解决方案是否合适。
猜你喜欢
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
  • 2010-11-26
  • 1970-01-01
  • 2019-07-06
相关资源
最近更新 更多