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。实际大小会显示在预览下方。发送前检查小字是否清晰。原图不变,处理过程都在这台设备上完成。
仅包含已核对单据。
# 收据与发票识别 读取照片,检查字段和裁剪结果,准备供邮件应用使用的压缩附件和合计。 > 在本地读取收据和发票照片,核对金额,并使用手动或可选的历史汇率换算货币。准备供分享面板或邮件文件使用的压缩附件和合计;由你检查并发送。 照片在设备上识别。可选的历史汇率请求只把币种和所选日期发送给 Frankfurter。邮件与分享操作由你主动把内容交给所选应用。 ## 照片在**这台设备上识别**。在线汇率查询是可选操作。由你选择要发送或分享的内容。 照片在这台设备上解码和识别。页面自带 OCR 引擎和英文识别数据,识别时不会上传照片或提取的字段。手动汇率、复制报告和下载也都在设备上完成。只有点击“查询历史汇率”才会向 [Frankfurter](https://frankfurter.dev/) 发送两个币种代码和所选日期。该服务会看到请求和你的 IP 地址,但不会收到图片、金额、OCR 文字、文件名或邮箱地址。邮件和分享是你选择的下一步。点击这些按钮会把报告或所选文件交给设备上的应用。由你选择收件人、检查内容并发送。 - ✗ 处理时不上传 - ✗ 无需账户 - ✓ 离线 OCR - ✓ 逐份核对单据 - ✓ 通过自己的应用发送 ## 如何从照片提取收据和发票信息 1. **选择清晰照片。** 一次最多添加 20 张 JPEG、PNG、WebP 或 AVIF 图片,每张不超过 20 MB。每张图片只放一份收据或发票。OCR 支持英文印刷文字。拍下完整单据,保持光线均匀、文字正向且清晰。 2. **识别、裁剪并对照检查。** 运行 OCR 后,对照每张照片检查建议字段和原始识别文字。横向照片可先旋转再识别。调整裁剪范围,保留所有单据边缘和文字,再重新识别该范围。修改商家、日期、编号、币种和总额。商家或编号无法可靠识别时可以留空。特别要区分最终总额、小计、折扣、交付现金、找零、税额和未付余额。 3. **逐份确认单据。** 核对字段、裁剪和换算结果。先选择单据上印刷的币种,再选择所有单据共用的邮件汇总币种。每份汇率可手动填写,也可核对收据日期后选择在线查询并点击“查询历史汇率”。页面会显示一单位原币种能换多少汇总币种。相同币种使用汇率 1。只有确认过的换算金额才会计入总额。请删除重复照片,避免同一张收据重复计数。 4. **把报告交给你的应用。** 检查准备好的 JPEG 预览和大小。设备支持时,可点击“通过邮件分享图片”选择邮件应用,也可下载包含报告和 JPEG 附件的邮件文件。由你检查并发送消息。应用无法打开邮件文件时,可下载并解压 ZIP,再把图片和 CSV 添加到新邮件。 ## The longer version [从照片提取收据与发票信息](https://httcup.github.io/tools/guides/extract-receipts-and-invoices/): 核对收据 OCR 和裁剪范围,选择统一邮件币种及手动或历史汇率,再发送压缩图片、每笔换算金额、单据数量和总额。 ## Also in the box - [图片转 PDF](https://httcup.github.io/tools/images-to-pdf/): 把你的图片装进一个文档。 - [文档扫描](https://httcup.github.io/tools/document-scanner/): 把纸拍下来,回来的是一份看着像扫描的东西。 - [从视频里提取音频](https://httcup.github.io/tools/extract-audio-from-video/): 把视频拖进来,声音就取出来了。画面从不解码,也不上传任何东西。 - [音频剪辑](https://httcup.github.io/tools/trim-audio/): 边听边标出值得留的段落。它们会合成一个文件回来,就切在你说的位置。 ## Questions ### 每张收据或发票都能识别正确吗? 不能。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 和下载都可离线使用。在线历史汇率查询需要联网,已经获取的汇率会保留在打开的标签页中。打开草稿可能不需要联网,但实际发送邮件通常需要应用联网。 ### 历史汇率怎样使用收据日期? 核对收据上印刷的日期,再填写换算日期栏。有歧义的日期不会猜测。选择在线查询并点击“查询历史汇率”。结果会标出实际汇率日期,若请求当天没有公布汇率,日期可能更早。确认前请检查。你也可以逐份手动填写不同汇率。邮件会保留每笔换算金额使用的汇率、来源和日期。 ## How the privacy claim is verifiable - **OCR 在你的设备上完成。** 照片由像素组成,读取文字需要 OCR 引擎。页面自带 Tesseract 和英文识别数据,无需把照片交给服务器。浏览器在内存中读取你选择的文件。本站不保存照片或提取的字段。引擎和数据在传输压缩前约为 8 MB,会随工具一起缓存。版本、源文件和[许可证就在资源旁边](https://httcup.github.io/receipt-invoice-extractor/vendor/README.md)。 - **建议金额仍需要你核对。** 褪色的数字、反光或靠近底部的小计,可能产生看似可信的错误结果。请对照图片核对商家、日期、编号、币种和总额,修改错误,并检查完整单据是否仍在裁剪范围内。只有确认过的单据才会计入汇总。所有剩余单据都确认后,才能导出邮件或下载附件。修改字段、裁剪或旋转后需要再次核对。复制报告和下载 CSV 可包含未完成的行,会标记为待核对。确认只是记录你的检查,不是独立验证单据的算术。 - **邮件内容由你决定如何发送。** 设备支持文件分享时,“通过邮件分享图片”会把压缩 JPEG 副本和报告交给系统分享菜单。请在那里选择邮件应用,检查收件人、正文和附件。不支持时,可下载包含报告和所有 JPEG 附件的邮件文件。兼容的应用会把文件作为草稿打开,其他应用可能需要转发或重新发送。本页不会发送邮件。之后的发送由邮件应用和服务提供方按自己的设置完成。 - **发出的图片是裁剪、压缩后的副本。** 调整裁剪范围时,请保留完整收据或发票。找到清楚的单据边缘时,页面会建议裁剪范围,否则保留整张图片。对于长条彩色收据,如果检测边缘外仍有相同纸张颜色,可能会保留图片的整个端部,以保住标题或末尾文字,也会多留一些背景。请检查并调整建议范围。JPEG 副本最长边不超过 1600 像素,每张目标大小约为 350 KB。发送前检查预览和显示的大小,目标大小不保证能达到。原图不变,也不会作为附件发出。邮件应用无法使用邮件文件时,可下载并解压 ZIP,再手动添加 JPEG 副本和 CSV。 - **在线汇率查询是可选操作。** 使用手动汇率时,整个准备过程都可离线完成。仅选择在线查询不会发起请求,还需点击对应单据的“查询历史汇率”。请求只把原币种、汇总币种和所选日期发送给 api.frankfurter.dev,不带凭据或来源网址。Frankfurter 会看到你的 IP 地址和请求。返回的汇率和实际日期会显示在单据旁及报告中。参考汇率可能与银行或银行卡扣款汇率不同。服务无法提供汇率时,请手动填写。页面不会悄悄改用今天的汇率。 - **保存或分享前,报告只存在于当前标签页。** 这里没有账户或单据历史。核对时请保持页面打开,离开前复制报告或保存 CSV。关闭或重新加载页面会丢失内存中的批次。复制、下载或交给其他应用的报告会保留在你选择的位置。 - **页面上的其他脚本会收到什么。** 本站的广告、统计和捐赠按钮脚本与其他工具一样加载。照片、OCR 文字、文件名、商家名称、金额和单据数量不会交给这些脚本。读取照片和生成报告的代码由本站提供,可在代码仓库中查看。 - **识别可离线完成,发送取决于邮件应用。** 等页面的离线状态显示已就绪后,可断网再识别一张照片。缓存的 OCR 引擎、核对表单、汇总、复制、JPEG 准备、手动换算和下载仍能使用。在线汇率查询需要联网。邮件应用可能可以离线保存草稿,实际发送则需要该应用使用的网络连接。 **Check it yourself.** None of the above has to be taken on trust. This page is generated from the templates and config in the repository by a build script you can read and run yourself, and the result is committed to the `dist` branch — so you can diff what is served against what a build of the sources produces: https://github.com/httcup/tools The files worth reading first are `config/site.toml` for the Content-Security-Policy,`src/ocr.js` 是本地 OCR 封装,`src/main.js` 负责核对以及交给邮件或分享菜单,`src/attachments.js` 生成 JPEG 副本,`src/email.js` 生成邮件文件,`src/fx.js` 负责换算和可选的历史汇率查询,`vendor/` 保存引擎和许可证。报告和附件都在当前标签页内生成。你可以选择邮件应用或下载邮件文件,再自行发送。
如何从照片提取收据和发票信息
- 选择清晰照片。一次最多添加 20 张 JPEG、PNG、WebP 或 AVIF 图片,每张不超过 20 MB。每张图片只放一份收据或发票。OCR 支持英文印刷文字。拍下完整单据,保持光线均匀、文字正向且清晰。
- 识别、裁剪并对照检查。运行 OCR 后,对照每张照片检查建议字段和原始识别文字。横向照片可先旋转再识别。调整裁剪范围,保留所有单据边缘和文字,再重新识别该范围。修改商家、日期、编号、币种和总额。商家或编号无法可靠识别时可以留空。特别要区分最终总额、小计、折扣、交付现金、找零、税额和未付余额。
- 逐份确认单据。核对字段、裁剪和换算结果。先选择单据上印刷的币种,再选择所有单据共用的邮件汇总币种。每份汇率可手动填写,也可核对收据日期后选择在线查询并点击“查询历史汇率”。页面会显示一单位原币种能换多少汇总币种。相同币种使用汇率 1。只有确认过的换算金额才会计入总额。请删除重复照片,避免同一张收据重复计数。
- 把报告交给你的应用。检查准备好的 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 和下载都可离线使用。在线历史汇率查询需要联网,已经获取的汇率会保留在打开的标签页中。打开草稿可能不需要联网,但实际发送邮件通常需要应用联网。
历史汇率怎样使用收据日期?
核对收据上印刷的日期,再填写换算日期栏。有歧义的日期不会猜测。选择在线查询并点击“查询历史汇率”。结果会标出实际汇率日期,若请求当天没有公布汇率,日期可能更早。确认前请检查。你也可以逐份手动填写不同汇率。邮件会保留每笔换算金额使用的汇率、来源和日期。