分析澳大利亚国民银行-银行对账单

小写友好的NAB标志让我想起了杰布·布什2016年的“Jeb!” logo 澳大利亚国民银行 成立于1982年,由澳大利亚亚洲国家银行和悉尼商业银行公司合并而成。 以市值排名第21大银行。 他们有一个爱尔兰的子公司,叫丹斯克银行,它的前身是爱尔兰国民银行。 听起来像是一个相当不错的银行,那么他们的PDF质量好不好呢?我们将通过研究他们的住房贷款报表来回答这个问题。 第1页 这是第一页的标题,这是一个相当合理的对账单,信息很好地分布在各个位置。但是有些元素没有对齐,例如NAB标志和它正下方的文本。我从上面的图像中隐去了两个条形码。第一个是传统的条形码,类似于你在超市产品上看到的,第二种看起来很像条形码,但与条形码的高度和粗细不同。 第二个条形码看起来更像一个智能邮件条形码,但这非常不合理,因为那些条形码是为在美国使用而设计的。 这是第一页的正文。我隐去了一些帐户持有人姓名和一些能表明用户身份的标识符。左边隐去最多的垂直文本似乎是该文档的标识符。转账表头日期、详情、借方、贷方、余额都非常典型。标题与各自的数据基本上都是对齐的,例如,“日期”标题的边界框只与日期“2021年6月5日”到“2021年7月19日”相交。 我们再次在转账表中遇到非转账数据。 Date Description 5 Jun 2021 Brought forward 7 Jun 2021 Please Note Your Current Debit Interest Rate Is 3.36% 14 Jun 2021 Please Note From 14 Jun 2021 Your Debit Int Rate Is 4.27% 最后两行描述了银行帐户状态的更改记录。这些记录都没有改变银行账户的余额。 他们在这笔利息费用交易的备注中包含了相当多的信息。他们让你知道,由于你使用了一些特殊的账户,因而利息费用减少了20.60,。他们还通知您,从2020年7月1日至2021年6月30日,您已被收取16,075.15美元的利息。另外,如果你仔细观察这张图片,你可能会注意到字符呈现出像素化。这是因为NAB使用位图字体吗? 我们看一下利息收费和1,401.63之间的句号字符块。这些字符看起来人畜无害,也许还会对阅读文档的人有所帮助,但它们会让我的算法摸不着头脑.这是因为我的算法根据字符之间的距离将字符连接到文本中,然后使用文本的边界框来确定文本应该与哪个标题相关联。这意味着文本“收取的利息……………………………………….785.70“可以分组为一段文本,然后它的边界框将与详情列关联。幸运的是,我能够绕过这个问题。 第2页 最后一页空白,后面跟着上述免责声明。我觉得这个免责声明很有趣: 我们之后可能会调整借记和透支交易,这可能会导致您的账户余额发生变化,以准确反映我们之间的义务。 他们这是在说之前的转账值可能会被改变吗?例如,他们是否能将2021年6月30日的利息费用从1401.63美元改为1400.00美元?我一直以为银行账户调整是通过额外的借记或透支转账完成的。 转换结果 转换结果很棒。最好将备注合并到一行中,这样每一行会都有日期、描述和余额值。 问题 他们为什么使用位图字体? 两种不同的条形码是干什么的? 最终想法 我挺喜欢这个结单的。它相对很简洁,没有使用很多颜色,所以它在黑白打印时不会出问题。但转帐表很难读,他们在表中包含了一些非转账项。位图字体看起来很糟糕,即使是用100%的放大倍率查看。有相当多的地方说明文本与借记列相交。我觉得有线条辅助的表格会更好看。最后的页面看起来有点傻,因为它只使用了页面底部的20%。 最终得分7/10

分析汇丰银行香港信用卡对账单

这栋楼里的人擅长制作PDF吗? 在帮助客户解决转换银行对账单的问题时,我见过相当多的对账单。许多银行对账单都遵循一种逻辑结构化的格式,这种格式易于人类阅读,也易于算法从中提取数据。你会认为这是一种标准化的标准格式,银行会参考其他银行的对账单,并对照最好的银行制作自己的对账单。我认为银行对账单格式的好坏还是取决于个人主观。让我们从汇丰香港的信用卡对账单格式开始。 第1页 首先引起我注意的是淡粉色的页眉和页脚,这让我想起了复写纸,我很好奇知道他们为什么要这样设计。标题由两个元素组成,左边是一个徽标,右边是一些文本。我认为页眉看起来很不错,尽管它看起来并不完全垂直于页脚。接下来是文档的标题。后面有一个页面计数器,这是我们遇到的第一个动态元素。向下往左边看,有我们的帐户名称,后面是帐户地址。我已从这份文件中隐去了我的地址。向右看,出现了这个M01496文本元素。我不确定这是什么。“M”代表男性吗?我不是很确定.再向右看,我们遇到了第一张表格。它有五个动态元素和英汉双语的五个标签。 有趣的是这块区域的中文文本是不可选的。整个文档上没有其他的动态中文文本,所以我认为它们被渲染为图像,但实际上它们并不是。这有待进一步研究。 先来说说交易表背后的“Platinum”水印。我不知道为什么这是必要的,它只让转账表更难读。 现在到了我们关心的部分,转账表。乍一看,我们似乎有一个转账表,每个转账有四个字段: 记账日期 交易日期 交易说明 金额 然而,交易说明有时会进一步细分为四个字段: 说明 地点 收费国家 收费货币 收费金额 只有当收费货币不是港币时,才存在收费货币和收费金额字段。关于金额字段的,有一个有趣的事情是,付款会在尾部用CR标记。所以,每当我用信用卡买东西的时候,这笔交易会被算作是借记交易,每当我还款信用卡的时候,那笔交易也会被算作是借记交易。我觉得他们不会为所有的信用卡费用添加尾随数据库,这会给账单增加不必要的信息,也许这会让我看到我花的钱很难受。我的通用账单处理器无法解析说明中的五个字段,但是,如果您需要一个自定义解析器,我很乐意帮助您构建它. 页脚很标准,下面有一些关于如何上报丢失的卡片的信息。一些关于应付款项的信息。奇怪的是,有一个大的空白矩形。我想知道那是干什么用的。然后在左下角,他们重复了一些在页面右上角可用的信息。有趣的是,他们重复了页面右上角的五个字段中的四个,并遗漏了信用限额。在这个冗余信息的右边,有一个文本块告诉你如何通过邮件支付。然后在底部有感谢信息,在感谢信息下面有一个漂亮的粉红色长方形。 第2页 在这个表格中,有着同上的粉红色标题、页面指示符和一些帐户和对账单细节。下面有一个巨大的转账表但是,我们很快就注意到这个转账表中只有一笔转账,其余的都是不相关的数据。接下来,有一些关于外币购买费用的信息。接着他们告诉我们文件中的字母CR是什么意思。之后,我们会看到我们的‘奖励积分’余额。接下来是一些关于Apple Pay的信息。接着是交易摘要,最后是利息费用。 第3页 这里有一些有趣的东西,汇丰为我们提供了两种假设情况: 你的信用卡上欠了20,000美元,决定支付最低金额.在这种情况下,你需要26.3年的时间还款,最终你将支付汇丰70,510美元 你的信用卡上欠了20,000美元,决定支付888美元。在这种情况下,你需要三年时间来偿还,最终你将支付汇丰31957美元 我觉得去验证这些数字的过程会很有趣。场景 #1 有点难以验证,因为我不知道最小还款金额是多少,当然最小金额是根据你欠的余额而变化的。所以我写了一些模拟还款代码。 After 1 months the balance is 19637 After 2 months the balance is 19264 After 3 months the balance is 18882 ... After 33 months the balance is 1309 After 34 months the balance is 456 After 35 months the balance is -419 Total paid is 30660.

Read more →

我为什么要创立银行对账单转换器

我在香港拥有一家名为Dragon King Creation Limited的公司.公司没有员工,我是唯一的董事,我拥有公司100%的股份。我在2015年创建了这家公司,以管理我的 Android 和 iPhone 应用程序销售收入。这家公司赚不了很多钱,但它仍然是一家正式的公司。在香港的有限公司每年都要接受审计。当我在走这个审计过程时,我的会计师问了我一堆问题,并要求提供各种文件,包括银行对账单和信用卡对账单。 {{<figure src=“/blog/images/why-i-created-bank-statement-converter/amtel.jpeg”caption=“这是我的会计师所在工作的美丽建筑”>}} 我有两个银行账户和一张信用卡。我的银行账户和信用卡是由汇丰银行发行的,但汇丰银行并不提供 Excel 或 CSV 转储。他们只提供 PDF 银行对账单和 PDF 信用卡对账单。所以在每年2月份左右,我都要进入我的网上银行账户,下载24张银行对账单和12张信用卡对账单。然后我通过电子邮件把它们发送给我的会计,然后继续过我的生活。今年,我把这些文件寄给了我的会计,他们给了我一份包含所有交易的Excel文档。我问他“你是怎么把这些 PDF 变成 Excel 格式的”。 “我手动把数据复制粘贴到 Excel 里” 我想,天哪,他大概要为他所有的客户这样做,其中一些人每月可能会有数千笔交易和几十个银行账户。我和几个做会计的朋友聊了下,他们告诉我同样的事情“我们手动将数据复制到 Excel 中”。他们还告诉我,他们尝试过使用一些将 PDF 转换为 Excel 的软件,但它并不能完美地完成任务,可能依旧需要好几分钟来处理这些文件。然后我想“嗯,我觉得其他人也会遇到这个问题,也许我可以写一些东西,从银行对账单中自动提取重要信息,并将其写入 Excel 文件”。 我获得到了四种银行对账单/信用卡对账单格式: 汇丰个人 汇丰信用卡 汇丰商业银行 西太平洋私人银行 以下是 PDF 格式的银行对账单数据:这是我希望得到的数据的样子这听起来并不难,但要找出PDF文档中转账表的位置就很棘手了,弄清楚转账表的底部也很麻烦。此外,当“转账备注”列描述一笔转账时,它可能会被拆分成多行,弄清楚什么时候需要合并行,什么时候不合并非常困难! 我将在之后的文章中详细介绍它是如何工作的,这篇文章更多地讲述了为什么我一直在花时间,为了将 PDF 银行对账单转换成 Excel 文件的原由。

从PDF中提取表格

从PDF文件中提取数据并转换为Excel文件是一个非常让人头痛的事情。很多人还是依靠手动复制。如果您想让机器自动完成数据转换,请执行以下步骤 登陆 BankStatementConverter.com 单击 Convert a PDF按钮 选择您想要转换的PDF 等待它完成上传 点击查看 你应该被带到一个页面,在那里你可以看到你上传的PDF。 将矩形选区拖到页面上。类似于下面的截图。继续拖动区域,直到选定所有要提取的数据。 单击导出选择。您应该会看到如下截图所示的页面: 点击下载。一个包含您所需数据的CSV会开始下载。 搞定!如果您有特殊的需求或问题,请随时给我们发电子邮件

使用 Ktor 调用 Twitter OAuth 1.0A

我最近在做一个新项目,牵涉到许多提供通过社交媒体登录的提供方。这意味着我需要学习什么是 Oauth 以及如何创建 API 来与 Oauth 提供商进行通信,如Facebook、Google、Github和…推特。对于前三个提供方,工作一切顺利,但Twitter不是。我花了大约五个小时阅读Twitter的文档,浏览博客文章和库,编写代码。我是这么操作的。 步骤1 - 配置 OAuth URL 和参数 我用的是Ktor的OAuth包,你需要更改urlProvider,consumerKey和consumerSecret.其他字段应该保持不变。 oauth("auth-oauth-twitter") { urlProvider = { "${config.appConfig.backEndBaseUrl}/auth/callback/twitter" } providerLookup = { OAuthServerSettings.OAuth1aServerSettings( name = "twitter", requestTokenUrl = "https://api.twitter.com/oauth/request_token", authorizeUrl = "https://api.twitter.com/oauth/authorize", accessTokenUrl = "https://api.twitter.com/oauth/access_token", consumerKey = "CONSUMER_KEY_FROM_TWITTER_DEV_PORTAL", consumerSecret = "CONSUMER_SECRET_FROM_TWITTER_DEV_PORTAL", ) } client = httpClient } 步骤2 - 创建触发器和回调端点 您需要设置一个处理程序来触发 Oauth 流,Ktor的包能替你完成这一任务。更有趣的部分是回调 URL。Twitter调用回调 URL 时使用token和atokenSecret。当您向 Twitter API 发出请求时,您需要用这些令牌签名。对于我来说,我只想要登录用户的个人资料,但您可以选择代表用户发推。 authenticate("auth-oauth-twitter") { get("/auth/login/twitter") { // 自动重定向至'authorizeUrl' } get("/auth/callback/twitter") { val response = twitterTransport.

Read more →

将扫描的银行对账单转换为Excel

几周前,我收到一封来自澳大利亚用户的电子邮件,上面写着“我上传了一份银行对账单,但什么也没发生,我怎样才能看到转换后的文件?”我看了看我的 Grafana 仪表板,发现这个用户上传了一个基于图像的PDF,可能是一个扫描的银行对账单。我已经回复了相当多的用户,告诉他们扫描的文档不适用。我从我的已发送文件夹中捞出一条回复,并将其发给了这个用户。 他们指出了一个很好的问题,我们的网站宣传我们能将 PDF 形式的银行对账单转换为 excel 文件,而她上传的正是一个PDF 形式的银行对账单。我给他们发送了一条补充信息,解释了扫描和非扫描 PDF 之间的不同。 发送完毕后我出去跑步去了。跑到一半时,天开始下大雨,我在天桥下等待雨停。在等待的时候,我收到了用户的回复,告诉我他们因为扫描的文件不能转换而快要“崩溃了”。 这时我注意到这个用户的电子邮件签名上有一个电话号码,所以我想“嗯,我一直在考虑使用 OCR 技术(光学字符识别软件)来处理基于图像的PDF,为什么不打电话给这位用户,看看他们是否可以等一两个星期让我写出这一功能”。所以我打了她的电话号码,她在澳大利亚,我在香港,电话费对我来说略微有点贵。 “……你好。”她迟疑地接起了电话 “嗨,我是 Angus,我们之前一直在邮件往来,讨论关于银行对账单网站的事” “你从哪里打来的电话” “香港” “哦,好吧” 我们接着探讨了她的当前遇到的情况,她有很多客户给她发送纸质报表,如果她需要手动完成这些报表将花费她很长时间。 “我想我可以处理它们,但我需要两周时间来准备一些东西。你能等那么久吗?“ “是的是的是的!” 我们进一步聊了聊新冠和澳大利亚,我挂断了电话跑步去了。在接下来的一周里,我玩了玩 OCR 软件,写了一些基本的代码让她试用。我给她发邮件,她试了一下,但有趣的是她居然上传了一份基于文本的 PDF 文件! 我们聊了大约11分钟,电话费大概是11*7.2=80美元。但这是值得的,我想能够和更多的用户在电话上聊聊。

Join The Mailing List