返回首页

24小时热榜

2作者: matherslabs大约 20 小时前原帖
我最近被解雇了,决定将我的精力投入到一些有意义的事情上。在两周的时间里,我每天工作16小时,开发了一款工具,可以将澳大利亚银行的PDF文件转换为干净、可靠的CSV格式,专门针对澳大利亚的银行。 大多数澳大利亚银行只提供PDF格式的对账单,而通用的转换工具往往无法正常工作:列会错位,多行描述会导致解析失败,表头会移动。现有的工具处理得并不好,我想要一个能正常工作的工具。 为了开始,我使用了自己的银行对账单来构建初始的解析器。当我意识到获取更真实的测试数据是多么困难时,我有了一个“显而易见”的时刻。人们不会随便交出他们的财务账本。这坚定了我的核心原则:信任和隐私必须是绝对的首要任务。 我最初尝试在客户端使用JavaScript构建一切,以实现最大程度的隐私,但性能和可靠性都很差,并且将解析器暴露在前端会使其容易被复制。 我最终选择了一个折衷方案:在Google Cloud Run上使用Python和FastAPI作为后端。这让我能够在可靠性和严格的隐私架构之间取得平衡。文件实时处理,临时文件在请求完成后立即删除。没有持久存储,也没有请求体的日志记录。 我的技术方案简单明了,专注于可靠性: - 我使用pdfplumber提取文本,避免复杂且容易出错的OCR。 - 我应用了一组特定于银行的正则表达式模式,以准确定位日期、金额和描述。 - 采用前瞻性启发式算法正确合并多行交易。每个解析器都根据其银行独特的PDF布局特征进行定制。 该项目的重点非常明确。我不打算支持数百家银行并提供平庸的结果,而是专注于少数几家,以确保做到准确。目前支持CommBank、Westpac、UBank和ING,接下来是ANZ和NAB。整个项目部署在Cloudflare Pages上,输出适合Excel、Google Sheets、Xero或MYOB的干净CSV文件。 这是一项有趣的挑战,涉及逆向工程混乱的真实数据。 欢迎在这里试用:<a href="https://aussiebankstatements.com" rel="nofollow">https://aussiebankstatements.com</a> 我很想听听反馈。如果在你的对账单上出现问题,提供一个经过编辑的样本将对改进解析器大有帮助。 我也很想知道这里的其他人是如何应对类似的混乱数据提取挑战的。