这个页面的代码没跑起来。

直接从文件夹里打开 index.html,浏览器会拦下 JavaScript 模块,于是你选好收据或发票照片之后,页面不会有任何反应。改用 http 把这个文件夹提供出去:

powershell -ExecutionPolicy Bypass -File serve.ps1

然后打开 http://localhost:8080/。

收据与发票识别 把照片整理成可核对的报告

识别照片,核对字段和裁剪范围,再通过邮件发送压缩图片、每笔金额和总额。

语言: 简体中文
查看源码
照片在这台设备上识别。在线汇率查询是可选操作。由你选择要发送或分享的内容。

照片在这台设备上解码和识别。页面自带 OCR 引擎和英文识别数据,识别时不会上传照片或提取的字段。手动汇率、复制报告和下载也都在设备上完成。只有点击“查询历史汇率”才会向 Frankfurter 发送两个币种代码和所选日期。该服务会看到请求和你的 IP 地址,但不会收到图片、金额、OCR 文字、文件名或邮箱地址。邮件和分享是你选择的下一步。点击这些按钮会把报告或所选文件交给设备上的应用。由你选择收件人、检查内容并发送。

实时检查: 检查中…

离线: 检查中…

识别照片时,打开开发者工具观察网络面板。页面可能加载自带的 OCR 资源,但请求不会包含图片、文件名、商家或金额。页面缓存完成后,可断网并用手动汇率再试一次。点击“查询历史汇率”可看到发往 api.frankfurter.dev 的请求,内容只有币种代码和所选日期。之后发送邮件使用的是邮件应用的网络连接。

1 添加收据或发票图片

每张图片放一份单据。一次最多添加 20 张 JPEG、PNG、WebP 或 AVIF 图片,每张不超过 20 MB。页面自带 OCR 引擎,在这台设备上识别英文印刷文字。AVIF 图片由浏览器解码。

拍下完整单据,保持文字正向、光线均匀。HEIC 图片请先用 HEIC 转 JPG 转换。不支持 PDF 和手写收据。

2 逐份核对单据

先检查裁剪范围,确认附件文字清晰。OCR 可能认错数字,也可能选错总额。对照图片核对每个建议值,修改字段,选择邮件汇总币种并检查汇率,然后勾选核对确认框。每张图片算一份单据,重复添加就会重复计数。

OCR、裁剪和手动换算都在这台设备上完成。历史汇率查询是可选操作,只有点击“查询历史汇率”才会发起请求。请求把两个币种代码和收据日期发给 Frankfurter,该服务也会看到你的 IP 地址。图片、商家、金额和收据编号都留在这台设备上。

所有单据共用的邮件汇总币种 默认使用单据中出现次数最多的币种。次数相同时,使用最先出现的币种。手动选择后会保留你的选择。

为邮件总额选择一个汇总币种,所有单据都会使用该币种。在这里或任意单据中修改,会更新整个批次,并清除原有汇率和核对确认。

默认币种如何选定

图片和可编辑的单据详情会显示在这里。

3 汇总与邮件

仅汇总已核对的单据。原始金额按币种分别合计,单独一个 $ 无法确定具体币种。每份已核对单据的换算金额还会计入邮件汇总币种总额。每笔换算金额先四舍五入到两位小数,再相加。

主题 主题会加入单据数量。全部核对后,还会加入总额。手动修改的主题会保留。

邮件导出会附上裁剪、压缩后的 JPEG 副本。设备支持文件分享时,“通过邮件分享图片”会打开系统分享菜单。请在那里选择邮件应用并填写收件人。不支持时,会下载包含报告和图片附件的邮件文件。用兼容的邮件应用打开 .eml 文件,再编辑、转发或重新发送。不同应用对草稿的支持不同。上方填写的收件人会写入邮件文件。邮件由你检查并发送。

ZIP 包含处理后的 JPEG 图片和 CSV,可手动添加为附件。图片最长边不超过 1,600 像素,每张目标大小为 350 KB。实际大小会显示在预览下方。发送前检查小字是否清晰。原图不变,处理过程都在这台设备上完成。

单据数0
已核对0
待核对0
邮件汇总币种总额—

仅包含已核对单据。

以 Markdown 查看

如何从照片提取收据和发票信息

  1. 选择清晰照片。一次最多添加 20 张 JPEG、PNG、WebP 或 AVIF 图片,每张不超过 20 MB。每张图片只放一份收据或发票。OCR 支持英文印刷文字。拍下完整单据,保持光线均匀、文字正向且清晰。
  2. 识别、裁剪并对照检查。运行 OCR 后,对照每张照片检查建议字段和原始识别文字。横向照片可先旋转再识别。调整裁剪范围,保留所有单据边缘和文字,再重新识别该范围。修改商家、日期、编号、币种和总额。商家或编号无法可靠识别时可以留空。特别要区分最终总额、小计、折扣、交付现金、找零、税额和未付余额。
  3. 逐份确认单据。核对字段、裁剪和换算结果。先选择单据上印刷的币种,再选择所有单据共用的邮件汇总币种。每份汇率可手动填写,也可核对收据日期后选择在线查询并点击“查询历史汇率”。页面会显示一单位原币种能换多少汇总币种。相同币种使用汇率 1。只有确认过的换算金额才会计入总额。请删除重复照片,避免同一张收据重复计数。
  4. 把报告交给你的应用。检查准备好的 JPEG 预览和大小。设备支持时,可点击“通过邮件分享图片”选择邮件应用,也可下载包含报告和 JPEG 附件的邮件文件。由你检查并发送消息。应用无法打开邮件文件时,可下载并解压 ZIP,再把图片和 CSV 添加到新邮件。

说得更细的版本

从照片提取收据与发票信息 核对收据 OCR 和裁剪范围,选择统一邮件币种及手动或历史汇率,再发送压缩图片、每笔换算金额、单据数量和总额。

常见问题

每张收据或发票都能识别正确吗?

不能。OCR 可能认错数字,也可能漏掉浅色印刷、小字或艺术字商标。解析器会避开折扣和交付金额标签,但无法使用 OCR 没认出的标签。找不到可靠候选值时,商家和编号可能留空。缺少店名,或 $ 或 ¥ 符号无法明确币种时,也可能触发一次更近距离的商家标题识别。这次文字会单独显示,只用于店名和基于地址的币种建议。第一次识别较弱或缺少金额、日期时,可能会进行一次调整本地对比度的第二次识别,帮助区分文字和纸张。两次完整单据的识别结果都可查看。金额、日期、编号或币种仍有分歧时,字段可能留空供你填写。印刷币种优先于基于地址的推测,已识别的收据或发票日期优先于附加银行卡交易记录中的日期。这些处理可以改善建议值,但无法恢复模糊中丢失的细节,也不能保证正确。导出前请对照照片检查每个建议,并自行确认每份单据。本工具不提取逐项商品,也不验证发票算术。

一张图片可以放多张收据吗?

请每张图片只放一份收据或发票。工具把每张图片当作一份单据,不会拆分收据合集或模板页。每份单据请单独拍照或裁剪,保留识别信息和最终金额。否则不同收据的文字可能混成一个建议结果。

日期和货币符号如何处理?

单据日期保留原文。查询在线汇率前,请核对并在单独的换算日期栏选择日期,24/09/2018 这样的日期不会自动转换填入。英镑符号通常建议 GBP,单独的 $ 可能表示 USD、CAD、AUD 或其他使用 $ 符号的币种。与最终总额相关的印刷币种优先。币种仍不明确时,商家自己的地址中可识别的国家,或有辨识度的邮编与地区组合,可能提供建议。印刷地址行会显示在建议旁供对照。仅凭城市,或客户、送货、银行地址,不足以判断。无法解决的歧义或矛盾会让币种留空。不会查询定位服务。请对照单据核对每个建议代码。

支持哪些文件和文字语言?

支持 JPEG、PNG、WebP 和 AVIF 照片,一批最多 20 张,每张不超过 20 MB。自带的 OCR 模型识别英文印刷文字,不支持其他文字体系、手写文字、PDF 或 HEIC 文件。iPhone 的 HEIC 照片请先用设备照片应用或本站的 HEIC 转换工具导出 JPEG。

单据数量和总额表示什么?

每张照片算一份单据。每份单据会显示原始金额和同一邮件汇总币种的换算金额。总额会将已核对的换算金额逐笔四舍五入到两位小数后相加,报告也保留原币种分别合计的金额。邮件导出和附件下载要求全部单据已核对。重复照片不删除就会计数两次。

邮件按钮会自动发送吗?

不会。支持文件分享时,会把报告和压缩 JPEG 副本交给设备的分享菜单,请在那里选择邮件应用。不支持时,会下载包含报告和附件的邮件文件。建议主题包含单据数量,全部核对后还会包含汇总币种总额。手动修改主题后会保留你的文字。请检查收件人、内容和附件,再自行发送。本页无法判断邮件应用是否接收这些内容,也无法判断你是否最终发送。

裁剪后的图片会附在邮件文件里吗?

会。下载的 .eml 文件包含报告和所有准备好的 JPEG 附件。兼容的应用会作为草稿打开,其他应用可能显示为需要转发或重新发送的消息。原图不变,也不会附上。需要手动添加附件时,ZIP 包含相同的 JPEG 和 CSV。浏览器无法保证每个邮件应用都支持草稿文件或系统分享菜单。

邮件默认币种如何选定?

每份带有效币种代码的单据计一票。出现次数最多的代码成为邮件汇总币种。票数相同时,采用当前单据顺序中最先出现的代码。缺失或不完整的代码不参与。识别、修改或移除单据时,默认值会更新。手动选择汇总币种后会保留你的选择。“使用默认币种”会恢复自动选择。汇总币种改变后会清除原有汇率和核对确认。

可以选择列表里没有的币种吗?

可以。选择“其他/自定义代码”,为单据币种或邮件汇总币种填写三个字母的代码。修改汇总币种会更新所有单据,并清除原有汇率和核对确认。在线覆盖范围取决于币种组合和日期。没有历史汇率时,请手动填写,不会用最新汇率替代。

OCR 会上传我的照片吗?

不会。Tesseract 使用页面自带的英文数据,在浏览器内识别照片。复制和下载都在设备上完成。邮件或设备分享操作会由你主动把所选信息交给其他应用,之后的发送由该应用处理。

为什么细节很多的照片也可能识别不好?

反光、模糊、折痕和拍摄距离可能遮住文字,即使图片很大也一样。OCR 会将小裁剪范围最多放大三倍,加上窄白边,工作副本的最长边不超过 2400 像素。这可能帮助引擎读取小字,但不能恢复照片中缺失的细节。尽量让一份单据填满画面,保持文字清晰、光线均匀,横向单据先旋转再识别。原图和邮件附件不会因 OCR 而放大。

离线能用吗?

页面和 OCR 资源缓存完成后,识别、编辑、裁剪、手动换算、计数、准备 JPEG 和下载都可离线使用。在线历史汇率查询需要联网,已经获取的汇率会保留在打开的标签页中。打开草稿可能不需要联网,但实际发送邮件通常需要应用联网。

历史汇率怎样使用收据日期?

核对收据上印刷的日期,再填写换算日期栏。有歧义的日期不会猜测。选择在线查询并点击“查询历史汇率”。结果会标出实际汇率日期,若请求当天没有公布汇率,日期可能更早。确认前请检查。你也可以逐份手动填写不同汇率。邮件会保留每笔换算金额使用的汇率、来源和日期。