{"id":50040107,"url":"https://github.com/overtrue/qr-scanner-extension","last_synced_at":"2026-05-21T02:24:19.382Z","repository":{"id":352551772,"uuid":"1215580972","full_name":"overtrue/qr-scanner-extension","owner":"overtrue","description":"Chrome extension to scan all QR codes on a webpage. Built with React, Tailwind CSS, and shadcn/ui.","archived":false,"fork":false,"pushed_at":"2026-05-07T13:50:35.000Z","size":112,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-07T15:44:21.483Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/overtrue.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-20T03:56:23.000Z","updated_at":"2026-05-07T13:54:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/overtrue/qr-scanner-extension","commit_stats":null,"previous_names":["overtrue/qr-scanner-extension"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/overtrue/qr-scanner-extension","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overtrue%2Fqr-scanner-extension","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overtrue%2Fqr-scanner-extension/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overtrue%2Fqr-scanner-extension/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overtrue%2Fqr-scanner-extension/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/overtrue","download_url":"https://codeload.github.com/overtrue/qr-scanner-extension/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overtrue%2Fqr-scanner-extension/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33285709,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-20T15:12:43.734Z","status":"online","status_checked_at":"2026-05-21T02:00:07.181Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-21T02:24:18.031Z","updated_at":"2026-05-21T02:24:19.377Z","avatar_url":"https://github.com/overtrue.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QR Code Scanner\n\n\u003e Chrome 扩展：一键扫描网页中所有二维码图片，汇总内容，支持去重、过滤、复制和导出 CSV。\n\n## 功能\n\n- **全页扫描** — 自动识别页面中 `\u003cimg\u003e`、CSS 背景图、`\u003ccanvas\u003e`、SVG image 等所有图片中的二维码\n- **多策略解码** — BarcodeDetector（原生） → jsQR → 灰度二值化多阈值 → 高对比度增强，层层回退\n- **跨域支持** — 通过 Service Worker 代理获取跨域图片\n- **跨页累积** — 结果在会话期间持久保存，支持分页场景：扫描第 1 页 → 翻页 → 扫描第 2 页，结果自动合并（关闭浏览器后清空）\n- **Data URL 支持** — 直接打开 `data:image/...` 地址的图片也能识别\n- **内容去重** — 默认开启，可通过开关关闭\n- **内容折叠** — 长文本默认单行截断，可通过开关展开完整内容\n- **关键字过滤** — 实时搜索筛选结果\n- **批量选择** — 全选/单选控制保留哪些结果\n- **复制列表** — 一键复制选中内容到剪贴板\n- **导出 CSV** — 导出选中项为 CSV 文件（含序号、内容、来源类型、URL）\n- **URL 识别** — 二维码内容为网址时自动渲染为可点击链接\n\n## 技术栈\n\n- React 18 + TypeScript\n- Tailwind CSS + shadcn/ui\n- Vite 构建\n- Chrome / Firefox Manifest V3\n- jsQR + BarcodeDetector API\n\n## 安装\n\n### 从源码构建\n\n```bash\ngit clone https://github.com/overtrue/qr-scanner-extension.git\ncd qr-scanner-extension\nnpm install\n\n# Chrome 构建\nnpm run build\n\n# Firefox 构建\nnpm run build:firefox\n```\n\n#### Chrome 安装\n\n1. 打开 `chrome://extensions`\n2. 开启右上角「开发者模式」\n3. 点击「加载已解压的扩展程序」\n4. 选择项目的 `dist/` 目录\n\n#### Firefox 安装\n\n1. 打开 `about:debugging#/runtime/this-firefox`\n2. 点击「临时载入附加组件」\n3. 选择 `dist/` 目录下的任意文件（`manifest.json` 或 `background.js`）\n4. 扩展即加载，图标出现在工具栏\n\n## 使用\n\n1. 访问任意包含二维码图片的网页\n2. 点击浏览器工具栏中的扩展图标\n3. 点击「扫描当前页面」\n4. 查看识别结果，按需过滤、选择、复制或导出\n\n### 分页扫描\n\n对于有分页的图片列表：\n\n1. 扫描当前页\n2. 关闭扩展弹窗，点击「下一页」\n3. 再次打开扩展，之前的结果仍在，点击「继续扫描」\n4. 新结果自动追加合并，重复内容由去重开关过滤\n5. 全部扫完后，一次性复制或导出 CSV\n6. 点击「清空」按钮重置\n\n## 兼容性说明\n\n- **Chrome**: 使用 `chrome.storage.session` 存储扫描结果（关闭浏览器后清空）\n- **Firefox**: 回退使用 `chrome.storage.local`（Firefox 不支持 session storage），功能完全一致\n\n## 项目结构\n\n```\nsrc/\n├── popup/                  # React 弹出窗口\n│   ├── App.tsx             # 主组件（状态管理）\n│   ├── components/         # 业务组件\n│   │   ├── Header.tsx\n│   │   ├── StatusBar.tsx\n│   │   ├── Toolbar.tsx\n│   │   ├── ResultList.tsx\n│   │   ├── ResultItem.tsx\n│   │   ├── EmptyState.tsx\n│   │   └── ui/             # shadcn/ui 组件\n│   ├── globals.css         # Tailwind + 主题变量\n│   └── main.tsx            # 入口\n├── content/\n│   └── scanner.js          # Content Script（页面扫描）\n├── background.js           # Service Worker（跨域代理）\n└── lib/\n    └── jsQR.js             # QR 解码库\n```\n\n## License\n\nMIT\n\n## Author\n\n[overtrue](https://github.com/overtrue)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovertrue%2Fqr-scanner-extension","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fovertrue%2Fqr-scanner-extension","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovertrue%2Fqr-scanner-extension/lists"}