来源:http://www.pcworld.com.cn/how_to_use/1/2005/1019/2180.shtml
文章如下:
Linux下玩转扫描仪
第1页:设备检测
引:扫描仪是现代办公的重要外设,Linux对扫描仪的支持是通过SANE(Acanner Access Now Easy)软件包进行的。
首先要查询如何在Linux下使用扫描仪,可以连线到:http://www.sane-project.org/sane-supported-devices.html ,该站点不仅有最流行的Linux扫描仪软件,而且还有兼容硬件的数据库,可以查询扫描仪的兼容和可使用状况。
查询后通常会得到以下六个查询结果:
1. complete(完全支持Linux下使用扫描仪,并且可以使用扫描仪的所有功能和分辨率)。
2. good(大部分功能支持Linux下使用,但是可能有一些小缺陷)。
3. basic (基本上支持Linux下使用,许多功能不能实现) 。
4. minimal (最小程度上支持Linux下使用,但是工作质量不理想)。
5. untested(没有经过测试可能可以使用)。
6. unsupported(不能使用)。
Linux对SANE的支持包括两个方面:1.对底层接口设备的支持(SCSI和USB等);2.对一个具体型号的支持。
SANE是一个应用程序接口,它包含三个部分,使用命令查询:
rpm -qa|grep sane
sane-frontends-1.0.9-2 #实现API的库(中间件)
sane-backends-1.0.9-5 #访问扫描以的驱动程序(后端程序)
xsane-gimp-0.89-3 #gimp的扫描仪插件
sane-backends-devel-1.0.9-5
xsane-0.89-3 #调用API的程序(前端程序)
SANE的配置文件是:/etc/sane.d/dll.conf 和/etc/sane.d/目录下的其他文件。
/etc/sane.d/dll.conf:本身包含许多后端程序列表。它们通常以扫描仪制造商命名。SANE调用时会搜索这个列表。
特定扫描仪配置文件:除了/etc/sane.d/dll.conf之外,/etc/sane.d/还包含一些其他特定扫描仪的配置文件,这些文件是工具后端程序命名的,后缀是.conf。
设备检测
通常有两个命令可以查询扫描仪的情况,sane-find-scanner和scanimage。sane-find-scanner用来搜索本地扫描仪的接口:
sane-find-scanner
# No SCSI scanners found. If you expected something different, make sure that
# you have loaded a SCSI driver for your SCSI adapter.
found USB scanner (vendor=0x04a5, product=0x2060) at /dev/usb/scanner0
found USB scanner (vendor=0x04a5 [Color], product=0x2060 [ FlatbedScanner 13]) at libusb:002:002
# A USB device was detected. This program can't be sure if it's really
# a scanner. If it is your scanner, it may or may not be supported by
# SANE. Try scanimage -L and read the backend's manpage.
# Scanners connected to the parallel port or other proprietary ports can't be
# detected by this program.
上面结果表示没有发现SCSI接口扫描仪,检测到USB接口扫描仪。使用scanimage加参数-L 用来设备扫描仪的具体型号:
# scanimage -L
device `snapscan:/dev/usb/scanner0' is a Acer FlatbedScanner13
正确检测到扫描仪的型号之后,下面就可以调用Linux下的扫描程序进行工作了。
Scanimage是一个命令行下的工具,可以直接进行扫描:
# scanimage –d /dev/usb/scanner0 -mode color >1.pnm
这样一个1.pnm格式的图像文件就生成了。
第2页:使用图形化应用程序进行扫描
通常我们更加喜欢使用基于图形化应用程序进行扫描,Red hat Linux 9 桌面环境下的应用程序主要包括:Kooka和Xsane和Vuescan。
Kooka:KDE桌面环境下的扫描仪软件,通过调用gocr还可以实现OCR。
Xsane:基于GTK的SANE图像处理软件,可以单独使用也同时可以作为gimp插件使用。
Vuescan:安装简单的扫描仪软件,它自己配置330多种扫描仪驱动程序,可以不依赖SANE。
Xscanimag:基于Xwindw的扫描程序。
1. 使用Vuescan扫描图像
在Hamrick Software公司的主页http://www.hamrick.com/,可以下载最新版本的源代码:http://www.hamrick.com/files/vuesca8.tgz,最新版本是8。
Vuescan 是一个绿色软件,将源代码解压到一个目录下,不需要进行编译就可以直接使用。
下载安装命令:
#wegt http://www.hamrick.com/files/vuesca8.tgz
#gunzip vuesca8.tgz
# tar vxf vuesca8.tar
使用Vuescan前,首先要配置软件的一些主要参数。
(1) 点击“Device”中的子选单“Scan Mode”,选择匹配的扫描仪型号。其它还有选择扫描文件的存放目录(Disk File Name)、扫描图形是否旋转(Rotation)、是否自动存盘(Auto Scan)等等。
(2) 点击“Crop”选单,选择扫描仪的扫描尺寸。
(3)点击“Filter”选单,选择扫描进行锐化、压缩处理及是否去网纹等。
(4) 点击“Files”选单是配置中最重要的步骤。Vuescan 8提供TIFF和JPEG两种图像输出格式。通过鼠标移动“TIFF Size Reduction”或“JPEG Size Reduction”按钮可以选择扫描的分辨率,还可以点击“TIFF filet ype”选择扫描图像的色彩位数。
(5)点击“Color”选单,主要是选择扫描时的光亮度,以及是否可以使用默认参数等。
(6)点击“Prefs”选单,定制Vuescan 8工作时字体大小、窗口宽度等,一般可以使用默认参数。
(7) 配置完成后,Vuescan就可以使用了。在正式扫描之前,可以先预览一下图像,如图1。
图1 扫描前预览
2.从图像到文本(OCR)
OCR是光学字符识别技术(Optical Character Recognition)简称,它是针对印刷体字符,采用光学的方式将文档资料转换成为原始资料黑白点阵的图像文件,然后通过识别软件将图像中的文字转换成文本格式,以便文字处理软件进一步编辑加工的系统技术。Linux 下的OCR软件包括:
(1) gocr(http://jocr.sourceforge.net/ )扫描仪的OCR软件。是基于命令行的。但是可以被Kooka、Xsane调用。
(2) claraocr(http://www.Claraocr.org )这是一个大型的图像处理软件。可以实现大量纸媒体出版物到互联网文件的转换。它本身没有扫描仪接口,通常使用方法:先把扫描文件存成BMP格式文件,然后使用它进行转换。
(3) OCR Shop(http://www.vividata.com )Linux下商业版本的OCR软件。功能比gocr和claraocr更多。
下面以Kooka为例介绍如何在Linux下实现光学字符识别:
(1)首先下载安装gocr
# wegt ftp://www.itp.tu-graz.ac.at/pub/redhat/itp/9/gocr-0.37-2.i386.rpm
# rpm –ivh gocr-0.37-2.i386.rpm
(2)启动Kooka,打开一个终端运行:
“/usr/bin/kooka”
(3)Kooka运行后,会首先检测硬件,如果它支持你的扫描仪,就会弹出一个具有检测信息的确认窗口,确定后,就可以看到Kooka的主界面了。
(4)选择扫描仪的扫描尺寸。扫描图形是否旋转,是否扫描进行锐化、压缩处理及是否去网纹等。
(5)将扫描的图像放入扫描仪中,单击“预览扫描”按钮进行预扫,在预览窗口中可以清楚地看到该图片的扫描效果和详细信息。
(6)通过主界面选择合适的扫描模式和图像分辨率。然后再进行图像预览找到最合适的扫描效果。扫描模式设定为“黑白”。
(7)在预览图片后光标就会变为十字形,然后使用该光标框出预览图片中要扫描的部分确认后,单击“Final Scan”按钮,就可以进行扫描了。
(8)扫描完成之后,Kooka就会弹出一个“保存助手”来,在保存助手中你可以选择一种最合适的图形文件格式,如常用的JPG、BMP等,选定后即可保存。
(9)点击工具栏的“OCR Image”按钮,选择gocr安装路径以及“灰度级”、“灰尘大小”“间隔宽度”三个参数,点击开始按钮(见图2)即可进行光学识别。
图2 OCR识别设置
Kooka对外文识别率非常好。遗憾的是目前国内还没有Linux下中文识别软件。
第3页:使用Xsane进行网络扫描
对于中小型Linux企业和SOHO用户来说,一个扫描仪就足够了。但在现实中却没有那么简单,假设公司的扫描仪安装在一个员工的计算机上,那么别人要进行扫描时就会影响到他的正常工作。建议可以通过设置,把一台Linux机器配置成一个进行扫描的服务器。
1. 首先在服务器上配置好扫描仪驱动和进行扫描应用程序。
2. 检查客户端是否安装了SANED。
3. /etc/service 文件中加入一行添加SANE端口号:
sane 6566/tcp #sane network svanner assess
4. 为SANED创建一个超级访问程序/etc/xine.d/saned
service sane
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user =saned
group = sanned
server = /usr/sbin/saned
}
5. 向超级服务程序传递SIGHUP信号。
6. 建立加载SANED超级访问程序的用户和组存在,并且可以访问扫描仪。
7. 在/etc/saned/sane.conf文件中添加客户端主机名称。
8. /etc/saned/dll.conf文件中加入net选项,告诉scanimage命令搜索网络扫描仪。
9. 编辑客户端的/etc/sane.d/net.conf,添加SANED服务器的主机名称。
10. 如果使用防火墙,使用命令:“lsof -I|tcp grep LISTEN”察看6566端口是否打开。如果防火墙阻挡了6566端口使用命令打开:
#iptables -A INPUT -p tcp -m multiport --dport 6566 -j ACCEPT?
#iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
11.在使用客户端使用scanimage –L命令查询网络扫描仪。
# scanimage –L
device ’net:cap.com:/dev/usb/scanner0' is a Acer FlatbedScanner13
此时scanimage –L命令检测到扫描仪前边已经多了两个选项:标识符合以`net开始,在关键字之后是服务程序所在的主机名称。表示客户端的Linux计算机已经检测到扫描仪,下面就可以在客户端使用了Xsane程序进行扫描。
12. 注意网络扫描时选择参数
使用网络扫描仪要正确认识两个重要参数:分辨率和色彩精度。扫描仪的性能指标主要有反映扫描仪精度的分辨率、扫描图像彩色范围的色彩数(色彩精度)、灰度级、扫描速度和扫描幅面等。其中分辨率和色彩精度这两个参数最为重要。网络扫描时扫描仪精度、分辨率、扫描图像彩色范围的色彩数(色彩精度)过高,会降低扫描速度和占用宝贵的网络带宽。一般来说,对普通5寸照片而言,若用于网页72dpi就够用了;若用于打印可选择300dpi以上。
13.最后进行扫描
步骤和本地扫描没有区别,结果见图3。
图3 网络扫描效果
SANE在设计时就考虑到了灵活性,特别是单独的后端程序和前端程序工程的SANE的方法。SANE通过网络,用户可以将扫描仪连接到一台服务器上,并且通过访问控制时网络中的一些计算机可以使用扫描仪,就像扫描仪主机连在自己的计算机上。
如果你想在异构网络中使用扫描仪可以察看http://www.mostang.com/sane/sane-frontends.html, 这里介绍了许多windows下的前端程序,通过设置同样可以调用Linux服务器上的扫描仪。
备注:本文在Redhat Linux 9.0和RedHat Linux AS 4.0环境下测试通过,文章中使用的扫描仪是:Acer FlatbedScanner13,型号:640U。