热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

当前位置 :| 主页>Linux教程>软件应用>

Linux下玩转扫描仪

来源: 作者: 时间:2007-06-11 Tag: 点击:
       感谢原创作者:曹江华
扫描仪是现代办公的重要外设。Linux对扫描仪的支持是通过SANE(Acanner Access Now Easy)软件包进行的。查询如何在Linux下使用扫描仪,那SANE (Scanner Access Now Easy)站点就可以告诉你该怎么办了。况且,该站点不仅有最流行的Linux扫描仪软件,而且还以兼容硬件的数据库而颇具特色。这时可以连线到:
http://www.sane-project.org/sane-supported-devices.html   ,进行查询。
通常会得到六个查询结果:
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格式的图像文件就生成了。

二、使用图形化应用程序进行扫描
通常我们更加喜欢使用基于图形化应用程序进行扫描,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下中文识别软件。


三、使用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,添加Sane服务器的主机名称。
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程序进行扫描。
10、        注意网络扫描时选择
使用网络扫描仪要正确认识两个重要参数:分辨率和色彩精度。扫描仪的性能指标主要有反映扫描仪精度的分辨率、扫描图像彩色范围的色彩数(色彩精度)、灰度级、扫描速度和扫描幅面等。其中分辨率和色彩精度这两个参数最为重要。网络扫描时扫描仪精度、分辨率、扫描图像彩色范围的色彩数(色彩精度)过高,会降低扫描速度和占用宝贵的网络带宽。一般来说,对普通5寸照片而言,若用于网页72dpi就够用了;若用于打印,150dpi足亦。
12、最后进行扫描
                步骤和本地扫描没有区别。结果见图-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。



相关文章:
QT之1(PC机上搭建环境及应用)
安装wine
解决安装CentOS5之后,vi不显示颜色的问题
linux控制台下的一个好东西-splitvt
Vmware-server目标主机积极拒绝,无法连接
vmware server 1.0.6 for linux相关命令
逐步设置vim C/C++语法高亮显示和自动缩进
在VM虚拟机器Linux下安裝VMware Tool的方法
玩了一下compiz-fusion
BMP-Beep Media Player
VIM 文件编码识别与乱码处理(一)
VIM 文件编码识别与乱码处理(二
VI技巧
让firefox 支持 amule (ed2k 协议)
为CentOS 5.1中的Firefox 1.5安装Flash插件……
vi 在编辑某文件时,在该文件内查找东西用何命令?
Freebsd + wine1.1.9 + 国元网上证券交易(通达信
emacs 代码补全功能
安装drupal-6.2和简体中文语言包
谈 Linux GNU 实用工具兼容性
Linux 文件压缩工具指南 一些免费和实用工具的评
Emacs 基础知识
介绍 Emacs 的编辑环境
在 Emacs 中编辑文本
生活在Emacs中
生活在emacs中2
生活在Emacs中3
Linux命令行性能检测工具
Linux下Expect配置
生活在Emacs中4