OpenElections 项目收集美国详细的选举数据,直至选区级别。这是一个出乎意料的难题:县级和州级选举结果广泛可用,而选区级选举结果则以数千种不同的临时方式发布,而且在选举结果公布后很少进行汇总。
许多选区选举结果都是以充满图像的 PDF 形式发布的。
Derek Willis 最近开始依靠 Gemini 来帮助将这些 PDF 解析为 CSV 数据:
为了将图像 PDF 解析为 CSV 文件,我选择了 Google 的 Gemini,主要有两个原因。首先,它的结果通常非常非常准确(下面会详细说明一些注意事项);其次,Gemini 的大型上下文窗口意味着它可以处理大小高达数 MB 的 PDF 文件。
在这件作品中,他分享了在 Gemini 协助下完成现实世界专家级数据输入项目的过程和提示。
这个来自德克萨斯州莱姆斯通县的例子很好地说明了这个问题有多么棘手。要让传统的 OCR 软件正确识别这样的多列布局,总是需要一定程度的人工干预:
Derek针对 Gemini 2.5 Pro 的提示提供了一个示例、一些特殊说明以及有关两列格式的注释:
Produce a CSV file from the attached PDF based on this example:
county,precinct,office,district,party,candidate,votes,absentee,early_voting,election_day
Limestone,Precinct 101,Registered Voters,,,,1858,,,
Limestone,Precinct 101,Ballots Cast,,,,1160,,,
Limestone,Precinct 101,President,,REP,Donald J. Trump,879,,,
Limestone,Precinct 101,President,,DEM,Kamala D. Harris,271,,,
Limestone,Precinct 101,President,,LIB,Chase Oliver,1,,,
Limestone,Precinct 101,President,,GRN,Jill Stein,4,,,
Limestone,Precinct 101,President,,,Write-ins,1,,,
Skip Write-ins with candidate names and rows with "Cast Votes", "Not Assigned", "Rejected write-in votes", "Unresolved write-in votes" or "Contest Totals". Do not extract any values that end in "%"
Use the following offices:
President/Vice President -> President
United States Senator -> US Senate
US Representative -> US House
State Senator -> State Senate
Quote all office and candidate values. The results are split into two columns on each page; parse the left column first and then the right column.
经过抽查和一些手动调整,42 页 PDF 的结果正是我们所需要的。
来点更难的吧?卡梅伦县的搜索结果超过 600 页,看起来像这样——注意那些打孔的孔,它们遮挡了部分文字!
该文件必须分成每 100 页的块,整个过程仍然需要整整一个小时的工作 – 但最终的表格与官方投票总数相匹配。
我喜欢这个例子的现实感。像这样的AI数据录入并非灵丹妙药——仍然需要大量工作来验证结果,并需要创造性思维来突破局限性——但它代表了小团队在承接这种规模项目方面取得了真正的进步。
自我们开始处理德克萨斯州选区选区结果以来的六周内,我们已经完成了该州254个县中超过一半县的数据转换,其中包括许多类似此处展示的图像PDF文件。这种速度是数据录入或传统OCR软件无法实现的。
来源: Hacker News
标签:数据新闻、德里克·威利斯、 OCR 、人工智能、生成人工智能、法学硕士、双子座、视觉法学硕士、结构化提取
原文: https://simonwillison.net/2025/Jun/19/how-openelections-uses-llms/#atom-everything