# scanservjs **Repository Path**: xxjkzs/scanservjs ## Basic Information - **Project Name**: scanservjs - **Description**: 本程序可以实现将 USB 扫描仪共享至局域网,是用 javascript 实现的 SANE 的前端 UI 。 (代码、UI的本地化以及使用过程中出现的问题等请提交到原作者的仓库。中文文档由我个人翻译,水平十分有限,关于文档翻译的讨论欢迎在此复刻处发起 Issue 。) - **Primary Language**: JavaScript - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 3 - **Created**: 2021-04-15 - **Last Updated**: 2025-09-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # scanservjs [![Build Status](https://img.shields.io/github/actions/workflow/status/sbs20/scanservjs/build.yml?branch=master&style=for-the-badge)](https://github.com/sbs20/scanservjs/actions) [![Code QL Status](https://img.shields.io/github/actions/workflow/status/sbs20/scanservjs/codeql-analysis.yml?branch=master&style=for-the-badge&label=CodeQL)](https://github.com/sbs20/scanservjs/actions) [![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/sbs20/scanservjs?style=for-the-badge)](https://hub.docker.com/r/sbs20/scanservjs) [![Docker Pulls](https://img.shields.io/docker/pulls/sbs20/scanservjs?style=for-the-badge)](https://hub.docker.com/r/sbs20/scanservjs) [![GitHub stars](https://img.shields.io/github/stars/sbs20/scanservjs?label=Github%20stars&style=for-the-badge)](https://github.com/sbs20/scanservjs) [![GitHub](https://img.shields.io/github/license/sbs20/scanservjs?style=for-the-badge)](https://github.com/sbs20/scanservjs/blob/master/LICENSE.md) ![screenshot](https://github.com/sbs20/scanservjs/raw/master/docs/screen0.jpg) Copyright 2016-2023 [Sam Strachan](https://github.com/sbs20) ## 用户评价 > 我决定以后就只用这个啦, 在浏览器里用这个可比用打印机厂家提供的垃圾软件爽多了。 > 它让我的hp3900古董扫描仪满血复活 ,再也不用担心驱动和客户端的问题了, > 而且有浏览器就能用,夯! > 这项目NB! 我的兄弟牌扫描仪触控屏和按钮都坏了,本该扔进垃圾箱,但是这项目让它还能 > 发挥余热,远程控制就好。 > 我的扫描仪不再跟笔记本电脑相互束缚。 管它系统升不升级,Docker容器咋折腾都行。 ## 关于此项目 > scanservjs 是一个基于网页的扫描仪用户界面。 它可以在局域网内共享一个或多个扫描仪(使用SANE作为后端),免去了为所有客户机安装驱动程序的麻烦。 扫描的文件有多种压缩率和格式可选,如:TIF、 JPG、 PNG、 PDF 和 TXT(配合 Tesseract OCR)。 它适用于所有 SANE 兼容的设备并支持批量扫描。 ## 功能 * 裁剪 * 选择扫描源(扫描平板或自动进稿器) * 调整分辨率 * 多种输出格式及不同压缩率 * 滤镜:自动调整,阈值,模糊 * 自定义配置各种默认设置和滤镜、格式等。 * 多页扫描(可自动校正和双面扫描) * 多国语言支持 [欢迎帮助改进完善](https://github.com/sbs20/scanservjs/issues/154) * 浅色和深色模式 * 响应式设计 * 提供 `amd64`, `arm64` 和 `armv7`架构的 Docker 镜像 * OpenAPI 文档 它支持任意与 [SANE 兼容设备](http://www.sane-project.org/sane-supported-devices.html). ## 安装需求 * 与 SANE 兼容的扫描仪 * Linux 主机或能访问宿主硬件的虚拟机 * 软件包 sane-utils, ImageMagick, nodejs, Tesseract (可选) ## 安装 * Debian: ```sh curl -s https://raw.githubusercontent.com/sbs20/scanservjs/master/bootstrap.sh | sudo bash -s -- -v latest ``` * Arch: ```sh yay -S scanservjs ``` * Docker: ```sh docker run \ --detach \ --publish 8080:8080 \ --volume /var/run/dbus:/var/run/dbus \ --restart unless-stopped \ --name scanservjs-container \ --privileged sbs20/scanservjs:latest ``` ## 文档 ### 安装与设置 * [标准安装](docs/01-install.md) * [Docker 安装](docs/02-docker.md) * [SANE 设置](docs/03-sane.md) * [故障排除](docs/04-troubleshooting.md) ### 配置 * [配置](docs/10-configuration.md) * [集成](docs/11-integration.md) * [使用技巧](docs/12-recipes.md) * [使用代理服务器](docs/13-proxy.md) ### 开发 * [开发](docs/50-development.md) * [本地化](docs/51-localisation.md) * [测试](docs/60-testing.md) * [参考资料](docs/90-references.md) * [威联通NAS](docs/91-qnap.md) ## 运行 scanservjs 一般情况下开箱即用。首次运行时程序会尝试连接你的扫描仪,如果使用的是网络扫描仪或 Docker,可能需要安装一下驱动,有问题请参考上面的文档。扫描仪连接成功后页面就会加载。 ### 扫描页 控制扫描仪的页面。 页面会自动加载扫描仪的可用选项, 如果选项有误,请参考 [配置和覆盖配置](docs/10-configuration.md) 。 选框出现后可以裁剪图像。 如果有自动进纸器,可以使用 `自动` 选项实现连续多页扫描。 `手动`选项可以在批量扫描时手动换页。 在`格式`选项中选择输出文件的格式。每次扫描都会生成独立文件, PDF 和 TIFF 支持多页扫描, 其他格式则不行。 程序支持自定义管道命令如果扫描的管道命令会输出多个文件,程序会把它们打包进同一个ZIP文件。 ### 文件页 所有已扫描的文件都展示在此页面。 本程序的目的就是为了能把所有扫描的文件保存到本地。 程序不会主动删除这些文件, 除非您使用了 Docker 的卷映射,当运行新版本时文件会消失。 若用户想要进一步自定义文件名、目录结构或连接到云盘及 NAS 的话,涉及到的领域过于复杂宽泛,超出了本程序能提供的服务范畴。 scanservjs 可以通过管道命令自动化或者执行文件操作来集成文件。 请参考 [集成](docs/11-integration.md)的文档。 ### 设置页 在设置页自定义主题颜色和选择界面语言。 ### 关于页 显示版权和系统信息。 ## OpenAPI 文档 程序内置了 OpenAPI 文档。 可以在 `/api-docs` 或 `关于` 页面查看。 ![OpenAPI](https://github.com/sbs20/scanservjs/raw/master/docs/swagger.png) ## 项目缘由 为什么要再做一个 scanimage 的网页版的前端呢? 一开始只是想修改一下 phpsane 这个项目,把所有内容翻新一下,让它可以在没有 imagemagick 的情况下最轻量化运行——那个版本 [尚在](https://github.com/sbs20/scanserv) ,但已停止维护。然后我就想把它用 node 重写并改进一下,再后面就是用纯纯的用爱发电了。 ## 鸣谢 * 此项目由衷感谢 [phpsane](http://sourceforge.net/projects/phpsane/) * [全体](https://github.com/sbs20/scanservjs/graphs/contributors) 在数年来参与到提出 issues、解决 issues、 测试、 以及翻译的贡献者们。 谢谢大家! ## 关于 SANE *