@capgo/capacitor-document-scanner

中文文档
8.4.17发布于 2026/11/02MPL-2.0TypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 11.2万

扫描文档iOS和Android的电容插件

中文使用文档
文档目录16 节
  1. *免费开始*
  2. 主要特点
  3. 文档
  4. 兼容性
  5. 安装
  6. 重要说明
  7. Android 模拟器限制
  8. iOS App Store 评论和 VisionKit swizzle
  9. 演示
  10. 扫描一个音符
  11. API 密码
  12. 扫描文档(...)
  13. 接口
  14. 类型异名
  15. 数字
  16. 贷方

@ capgo/ 电容- document- scanner

用本地扫描仪扫描纸文档 UI: VisionKit 在iOS上和Google ML Kit 在Android上查找页面边缘,修复视角并返回干净的图像. 在您的应用程序中添加收件, ID 或合同抓取, 不建立相机屏幕 .

Capgo - Build Capacitor apps with AI, ship updates instantly

队长:在几分钟内将修正推给您的 Capacitor 用户,在没有Mac的情况下构建已签名的iOS和Android apps,并在一击中回滚.

*免费开始*

14天无限自由审判. 不需要信用卡

🤖 建筑与AI编码代理? 安装 Capgo 技能 所以克劳德代码,代码,光标,副驾驶,或双子座CLI知道如何安装和使用 @capgo/capacitor-document-scanner 在您的电容应用程序中: npx skills add Cap-go/capgo-skills。然后问你的经纪人: 添加@capgo/capor-document-scanner到我的Capacitor应用上,并把它接上 代理设置指南 • 妇女 主机磁共振

Example app on iOS scanning a handwritten page: the scanner finds the page edges and the scanned image appears in the app

主要特点

  • 原生扫描仪 UI数字 : scanDocument() 打开iOS上的VisionKit文档相机和Android上的ML Kit文档扫描器,并自动进行边缘检测和视角校正.
  • 多页扫描: 在一个会话中获取最多24页,或通过 maxNumDocuments: 1 用于单页模式。 Android在那页之后就停了 在iOS上,相机只在 iosVisionKitSwizzle 启用;默认的二进制在保存后将额外页面放下.
  • 作物和审查:Android总是提供收成和旋转. 在iOS上,VisionKit在"保存"前显示其审查屏幕. 每次捕捉后强迫编辑器都是选入的 swizzle. 见 iOS App Store 审查。 。 。 .
  • 图像清理: 调奏 brightness 财务报告和审定财务报表 contrast 在两个平台上。 关于Android, scannerMode 添加过滤器和ML清洗可以去除污点和手指.
  • 灵活产出: 获取文件路径或基数64字符串 responseType外加一个 success 或者说 cancel 状态.
  • 平台: iOS和Android. 互联网档案馆的存檔,存档日期2013-12-21. 不支持网络 : scanDocument() 拒绝为未执行.

文档

这里有最完整的医生: https://capgo.app/docs/plugins/文档-扫描器/

兼容性

插件版本电容兼容性维护
联合国联合国✅
页:1页:1应要求
页:1页:1❌
页:1页:1❌

说明: 此插件的主要版本沿用了Capacitor的主要版本. 使用匹配您的 Capacitor 安装的版本( 如 Capacitor 8 的插件 v8) 。 只有最新的主要版本得到积极维护.

安装

您可以使用我们的 AI 辅助设置安装插件 。 使用以下命令将 Capgo 技能添加到您的 AI 工具 :

npx skills add https://github.com/cap-go/capacitor-skills --skill capacitor-plugins

然后使用下列提示:

Use the `capacitor-plugins` skill from `cap-go/capacitor-skills` to install the `@capgo/capacitor-document-scanner` plugin in my project.

如果您更喜欢手动设置,请通过运行以下命令来安装插件,并遵循下面的平台特定指令:

npm install @capgo/capacitor-document-scanner
npx cap sync

重要说明

Android 模拟器限制

ML Kit 文档扫描器 对Android模拟器不起作用这是Google Play Services和ML Kit对模拟设备的限制。 当测试您的应用程序时 :

  • 使用一个 物理和机器人设备 用于测试文档扫描
  • QQ Android 仿真器将显示错误 : “ Android 仿真器上不支持文档扫描器 ”

这一限制是由于:

  • Google Play 服务与模拟环境的相容性问题
  • ML Kit 文件扫描器需要实际的硬件相机能力
  • 缺乏必要 ML Kit 运行时组件的模拟器

用于开发和测试,始终使用真正的Android设备.

iOS App Store 评论和 VisionKit swizzle

默认的iOS 二进制不包含私人的VisionKit swizzle. 这些呼叫载荷 VNDocumentCameraViewController_InProcess 与 NSClassFromString 交换 documentCameraController:canAddImages: 结束 method_exchangeImplementations。同一代码读取了私有的 UIKit 手势状态,以便打开裁剪编辑器。 iPhoneOS 27.1 SDK 仍然没有公开的页面限制或每封回调 VNDocumentCameraViewController。 。 。 .

接下来 @capgo/capacitor-social-login: swizzle 留在建筑外,除非应用选择进入.

默认构建 :

  • 使用公众扫描 VNDocumentCameraViewController API (英语).
  • maxNumDocuments 修剪保存后返回的页面。 相机仍然可以捕捉到到VisionKit的24页系统限制.
  • letUserAdjustCrop 财务报告和审定财务报表 reviewCapturedDocument 每次抓取后不要强迫编辑器。 愿景 Kit自己在Save之前的审查屏幕没有变化.
  • Android的行为没有改变.

在您需要iOS行为时启用 swizzle :

import type { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
  plugins: {
    DocumentScanner: {
      iosVisionKitSwizzle: true,
    },
  },
};

export default config;

然后运行 bunx cap sync。命令将旗帜写入 Package.swift 财务报告和审定财务报表 CapgoCapacitorDocumentScanner.podspec 在已安装的插件中,下一个 iOS 构建汇编 CAPGO_DOCUMENT_SCANNER_VISIONKIT_SWIZZLE。去掉旗帜并运行 bunx cap sync 来运送默认的二进制.

兹编成:

  • maxNumDocuments 达到极限时停止相机。 愿景 Kit自己的帽子还是24个.
  • letUserAdjustCrop 每次抓取后打开 VisionKit 编辑器.
  • reviewCapturedDocument 在下次抓取前显示当前页面,在达到限制时编辑器仍然打开.
  • 二进制包含 method_exchangeImplementations私人班级的检查 和私人手势读取。 Android没有改变.

这会让App Store审查更加困难. 静态分析可能命名 method_exchangeImplementations,您仍然可以解释评论注释中的用法: swizzle只将页数盖上并打开Apple文档扫描器内的编辑器. 它不会读取私人用户数据,也不会改变屏幕外的任何内容. 一些提交材料受到质疑,并在解释后获得批准。 其他人则没有提及这个符号。 批准是每份呈文,所以之前的通行证不会决定下一个二进制.

演示

扫描一个音符

iOS系统机器人
iOS DemoAndroid Demo

API 密码

扫描文档(...)

scanDocument(options?: ScanDocumentOptions | undefined) => Promise<ScanDocumentResponse>

打开设备相机并开始文档扫描体验.

参数类型
optionsScanDocumentOptions

回返情况: Promise<ScanDocumentResponse>


接口

扫描文件回复

Prop类型说明
scannedImagesstring[]用请求的响应格式扫描图像 .
statusScanDocumentResponseStatus显示扫描是否完成或取消.
方法签署说明
获取 PluginVersion()QQ承诺QQ版本:字符串;QQ获取本地 Capacitor 插件版本

扫描文档选项

Prop类型说明默认
croppedImageQualitynumber仅Android:从0到100(100是最佳)被收割图像的质量.100
letUserAdjustCropboolean允许用户在保存前调整检测到的裁剪. 在iOS上,VisionKit在"保存"之前已经显示自己的审查屏幕. 每次抓取后强迫编辑器需要私自的"VisionKit swizzle",它不会被编译为默认的二进制. 设定 plugins.DocumentScanner.iosVisionKitSwizzle 改为真实并运行 bunx cap sync 包括它。 见读取. 在Android上,作物/旋转总是ML Kit UI的一部分 扫描机模式; 使用 scannerMode 来控制过滤器和ML清洁.true
reviewCapturedDocumentboolean启用时,在继续前显示当前被扫描的页面,以便用户可以审查,并明确继续或完成流量. 在 iOS 上,它强制本地 VisionKit 预览/编辑器仅在抓取时之间 plugins.DocumentScanner.iosVisionKitSwizzle 已编译。 默认二进制在保存不变前离开系统审查屏幕. 在Android上,这个切换为ML Kit会话之间的一页一行. 在iOS swizzle启用后,在扫描限制达到后仍会显示审查/编辑屏幕.false
maxNumDocumentsnumber要扫描的文档最多 。 在 iOS 上,默认的二进制使用 public VisionKit,并在 Save 之后将返回的页面剪切到此限制 。 VisionKit本身仍然允许多达24次捕捉. 在下限停止相机需要 plugins.DocumentScanner.iosVisionKitSwizzle. On Android:自定义限制;性能默认为20(claimped 1-24)。 为单扫描模式设定为 1 。 Android在一个文档后停止. 在iOS上,相机只停留在一个文档之后 plugins.DocumentScanner.iosVisionKitSwizzle 已编译.20 on Android, 24 on iOS
responseTypeResponseType在(文件路径或基数64字符串)中返回扫描图像的格式.ResponseType.ImageFilePath
brightnessnumber对扫描的图像进行了亮度调整。 范围: -255至 255 (0 = 无变化,正 = 更亮,正 = 更暗) 用于补偿低光扫描.0
contrastnumber对扫描图像进行了对比调整。 范围:0.0至10.0 (1.0 = 无变化, > 1 = 对比度较高, < 1 = 对比度较低) 有助于在灯光不好的扫描中提高文本清晰度.1.0
scannerModeScannerMode仅Android:控制ML Kit特性和过滤器的扫描器模式. 独立 letUserAdjustCrop (各种模式都有作物/轮产)。 - “碱基”:基本扫描,用收割/旋转来进行,不使用过滤器或ML清洁——“碱基 用 过滤器”: 添加灰度和自动增强过滤器 - “ 完全” : 所有特征,包括基于ML的图像清洁(后期污迹,指等)ScannerMode.Full

类型异名

响应类型

'basic' | 'cors' | 'default' | 'error' | 'opaque' | 'opaqueredirect'

数字

扫描文件响应状态

成员数值说明
Success'success'扫描成功完成 .
Cancel'cancel'用户取消了扫描流量 .

响应类型

成员数值说明
Base64'base64'返回扫描的图像为基数64-编码字符串 .
ImageFilePath'imageFilePath'返回扫描图像作为磁盘上的文件路径 .

扫描机模式

成员数值说明
Base'base'仅使用裁剪和旋转特性的基本文档扫描。 没有过滤器或基于ML的增强.
BaseWithFilter'base_with_filter'基本功能外加自动滤波器(grayscale,自动增强).
Full'full'全功能集包括基于ML的图像清理. 自动去除污物,指甲等文物.

贷方

此插件是原版的重执行 https://document-scanner.js.org (中文(简体) ) 谢谢你的原作 我们用更现代的SDK重新编码了它 但爆炸了相同的API

版本与发布记录

@capgo/capacitor-document-scanner 共发布 79 个版本,首次发布于 2025/10/09;过去 12 个月发布了 58 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
8.4.17latest2026/11/026 天前
8.4.162026/10/2613 天前
8.4.152026/10/2415 天前
8.4.142026/10/1920 天前
8.4.132026/10/1525 天前
8.4.122026/10/1327 天前

关于 @capgo/capacitor-document-scanner 的常见问题

@capgo/capacitor-document-scanner 是什么?

扫描文档iOS和Android的电容插件

如何安装 @capgo/capacitor-document-scanner?

在项目目录运行 npm install @capgo/capacitor-document-scanner,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@capacitor/core(>=8.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@capgo/capacitor-document-scanner 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@capgo/capacitor-document-scanner 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@capgo/capacitor-document-scanner 可以商用吗?

@capgo/capacitor-document-scanner 使用 MPL-2.0 许可。弱 Copyleft:可以商用,也可以和闭源代码一起使用;但如果分发时修改了 MPL 授权的文件,这些文件的修改需以 MPL 开源。以上为概括,不构成法律意见,请以许可原文为准。

@capgo/capacitor-document-scanner 的下载量有多少?

根据 npm 官方下载统计,@capgo/capacitor-document-scanner 在 2026/10/09 – 2026/11/07 这 30 天内被下载 112,231 次,日均约 3,741 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@capgo/capacitor-document-scanner 还在维护吗?

最新版本 8.4.17 发布于 2026/11/02(6 天前);至今共发布 79 个版本,其中过去 12 个月发布了 58 个;首次发布于 2025/10/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。