问题描述
我正在使用ocrmypdf。我正在尝试对竞选财务PDF进行OCR。 pdf范例:https://apps1.lavote.net/camp/comm.cfm?&cid=11
我的客户想解析这些pdf以及其他pdf(格式496s,格式497s)。问题是,即使使用相同类型的形式,ocr结果也不一致。
例如,一个pdf(表格460)将产生以下结果:
Statement covers period
from 07/01/2005
through __11/30/2005
和另一个相同类型的结果:
Statement covers period
01/01/2006
from
through 03/17/2006
第一个通知中,第一个日期位于from
之后,而第二个通知中,第一个日期位于from
之前。尝试解析数据时,这会带来麻烦。
我正在使用所谓的“检查点”来解析相似类型的表单。这是一个示例:
checkpoints = [
['Statement covers period from','Date From'],['through','Date Thru'],['Date of election if applicable:',None],['\n',['\\NUMBER Treasurer(s)\n','ID'],['COMMITTEE NAME (OR CANDIDATE’S NAME IF NO COMMITTEE)\n\n','Committee / Candidate Name'],['NAME OF TREASURER\n\n','Name of Treasurer'],['NAME OF OFFICEHOLDER OR CANDIDATE\n\n','Name of Officeholder or Candidate'],['OFFICE SOUGHT OR HELD (INCLUDE LOCATION AND disTRICT NUMBER IF APPLICABLE)\n\n','Office Sough or Held'],]
我遍历每个检查点,找到当前迭代的开始索引和结束索引(使用当前检查点和下一个),[0]而不是[1],然后将内容保存到主对象的键中,像county_object[checkpoint[1]] = contents[start_index:end_index]
。
此设置仅适用于我正在解析的pdf。因为即使对于相同的表单类型,ocrmypdf也会产生不同的结果,所以我的设置并不理想。有人可以为我指出正确的方向吗?
谢谢
解决方法
我认为“完全相同”的460表格之间的区别是
由于被扫描而导致的垂直未对准
以较小的CW角和另一个以较小的CCW角。
希望您使用--deskew
进行调用,
但是即使这样,可能也会出现一些小的像差,这很麻烦。
日期之间的垂直分隔看起来很大且很稳健, 因此,一个日期将以适当的方式先于另一个日期。 考虑更多地关注mm / dd / yyyy模式 更少的文本锚点。
您可以obtain bound box coordinates来自Tesseract OCR。 用它们来消除日期的歧义, 根据您对表格上方或下方显示的内容的了解, 以及(大约)多少。