#!/bin/bash
#scan2PDF
#Requires: tesseract 3.03 for OCR to PDF
# scanimage for scanning, I use 1.0.24
# pdfunite to merge multiple PDF into one, I use 0.26.5
#
# Use scanimage -L to get a list of devices.
# e.g. device `genesys:libusb:006:003' is a Canon LiDE 210 flatbed scanner
# then copy/paste genesys:libusb:006:003 into SCANNER below.
# play with CONTRAST to get good images
DPI=300
TESS_LANG=nor #Language that Tesseract uses for OCR
SCANNER=genesys:libusb:006:003 #My USB scanner
CONTRAST=35 #Contrast to remove paper look
FILENAME=$1 #Agrument 1,filename
PAGES=$2 #Argument 2, number of pages
re='^[0-9]+$' #Check if second argument is a number
if ! [[ ${PAGES} =~ $re ]] ; then
echo "error: Usage: $0 filename number_of_pages" >&2; exit 1
fi
SCRIPT_NAME=`basename "$0" .sh` #Directory to store temporary files
TMP_DIR=${SCRIPT_NAME}-tmp
if [ -d ${TMP_DIR} ] #Check if it exists a directory already
then
echo Error: The directory ${TMP_DIR} exists.
exit 2
fi
mkdir ${TMP_DIR} #Make and go to temp dir
cd ${TMP_DIR}
echo Starts Scanimage...
scanimage -d ${SCANNER} --format=tiff --mode Color --resolution ${DPI} -p --contrast ${CONTRAST} --batch-start=1 --batch-count=${PAGES} --batch-prompt
echo Starts Tesseract OCR
for file in *.tif #Goes through every tif file in temp dir
do
tesseract $file ${file%.tif} -l ${TESS_LANG} pdf
done
if [ "$PAGES" = "1" ] #How many pages
then
cp out1.pdf ../${FILENAME}.pdf #Only one page, just copy the PDF back
else
for file in *.pdf #More pages, merge the pages into one PDF and copy back
do
pdfuniteargs+=${file}
pdfuniteargs+=" "
done
pdfunite $pdfuniteargs ../${FILENAME}.pdf
fi
echo ${FILENAME}.pdf done
rm * #Done, clean up
cd ..
rmdir ${TMP_DIR}
拥有一个简单扫描实用程序的想法是开发简单扫描的背后 -从 10.04 开始默认安装的扫描工具(应用程序 ‣ 图形 ‣ 简单扫描)。
只需扫描任意数量的页面,并在保存时选择 PDF 作为文件格式。
另一个稍微不那么简单的程序是gscan2pdf ,它提供了文本识别等附加功能,也在存储库中。
“好用”在用户眼中,却
xsane
提供了这个功能。选择显示查看器的多页(或按 CTRL-M),从那里弄清楚应该不难。我一直在使用
xsane
,直到我看到这个问题并认为它的界面至少可以说是特殊的,但有效。看到这个问题后,我去寻找并发现gscan2pdf存在于 Ubuntu Lucid/Maverick 存储库中。它使用相同的扫描 (libsane) 引擎,但 UI 更接近 Gnome。玩得开心,请尝试:
在 Simple Scan 的保存对话框中将文件名从 myfile.jpg 更改为 myfile.pdf。
在 Ubuntu 14.04、简单扫描 3.12.1 上测试。
即使文件类型下拉菜单不显示“PDF”,仅显示“图像”,这也有效。我认为这是一个 UI 错误。
此功能记录在
Help > Contents
:它说支持以下格式:
有趣的事实:如果您将扫描类型(“扫描”之外的下拉菜单)更改为“文本”,默认文件类型将变为 PDF。
从 USB 扫描仪扫描页面。使用 tesseract 将 OCR 转换为 PDF。将多个页面合并为一个 PDF。用法:scan2PDF 输出文件名 number_of_pages
对于那些希望使用 XSANE 的人。一旦您阅读了程序中从帮助 > XSane Doc 链接的设置指南,它就非常强大且直观 - 知道您可以用它做多少。还值得检查您的 SANE 后端是否正常工作(不是太特定于 Arch):https ://wiki.archlinux.org/index.php/SANE
如果您想从进纸器自动扫描文档,并想知道 XSane 是否会知道何时停止(而不是过早停止),只需在左上角输入一个大于适合页数的数字(扫描数图标)在您的喂食器中。即,如果您的进纸器可以容纳 10 页,则输入 15(以考虑厚度变化)。如果您有双面扫描仪,请将这个数字加倍。
当进纸器用完时,您会看到一个带有绿色警告三角形的对话框,上面写着“扫描页面:0”。这只是意味着进纸器是空的,您可以关闭对话框。如果您选择了“查看器”或“保存” " 在 XSane 的右上角,那么所有文件都将在那里 - 记得从查看器中保存它们。现在您可以再次按扫描继续您离开的地方,数字从同一点递增,或者您可以开始一个新项目。不会添加任何空白页。如果您选择“多页”,项目对话框应显示所有已完成的扫描,您可以单击以另存为多页 PDF、TIFF 或 PostScript。
高温下,
直流