Linux實(shí)用教程:自動(dòng)批量掃描文檔
譯文【51CTO精選譯文】本文將為讀者介紹如何構(gòu)建一套文檔批量掃描系統(tǒng)。為了實(shí)現(xiàn)這個(gè)目標(biāo),我們將使用眾多Linux工具。這種方法具有的優(yōu)點(diǎn)是,這個(gè)過(guò)程可以定制,以符合你特定的需求。這為你提供了一套可處理重大任務(wù),又能靈活定制的系統(tǒng)。
我們將著眼于兩種可能的最終產(chǎn)品:每一頁(yè)都是原始頁(yè)掃描件的PDF文件,以及含有原始頁(yè)文本內(nèi)容的文本文件。文本文件的內(nèi)容可以搜索,我們探討了將文本文件轉(zhuǎn)換成PDF文件的若干方法。
本教程具有模塊化特點(diǎn)。比如說(shuō),如果你在處理一組預(yù)先掃描的圖像,那么就可以略過(guò)頭幾個(gè)步驟,直接進(jìn)入到使用光學(xué)字符識(shí)別(OCR)軟件處理圖像,或者將它們轉(zhuǎn)換成PDF文件。同樣,如果你偏愛(ài)使用圖形用戶界面(GUI)工具來(lái)處理這個(gè)過(guò)程的某些環(huán)節(jié),也沒(méi)有什么可以阻止你。話雖如此,我們還是盡量讓這個(gè)過(guò)程的每個(gè)環(huán)節(jié)都可以編寫(xiě)腳本,以便實(shí)現(xiàn)全面自動(dòng)化。
我們通過(guò)充分使用基于命令行的工具,確保這個(gè)項(xiàng)目的每個(gè)階段都是可以定制、可以編寫(xiě)腳本。
- 相關(guān)資源
- Linux機(jī)器
- 掃描儀
- 具體步驟
第1步:安裝SANE
你可以使用程序包管理器,安裝主要的掃描儀程序包SANE(Scanner Access Now Easy)。要是你已安裝了SANE,但是掃描儀訪問(wèn)起來(lái)還是有困難,網(wǎng)上可能有面向該掃描儀的針對(duì)特定廠商的SANE后端工具。如果是這種情況,不妨用谷歌搜索一下。
第2步:找到掃描儀
在命令行鍵入scanimage -L命令,檢查一下SANE能否與你的掃描儀兼容。要是你的掃描儀得到支持,文本輸出就會(huì)含有設(shè)備名稱。你需要的那部分就是冒號(hào)前面的第一個(gè)元素。
第3步:掃描圖像
鍵入scanimage -d [設(shè)備名稱] > test.pnm,快速測(cè)試掃描某個(gè)對(duì)象。這會(huì)使用默認(rèn)設(shè)置來(lái)掃描一頁(yè)內(nèi)容。在圖形查看器中打開(kāi)掃描后的文件,檢查一下。要是遇到了問(wèn)題,可以添加-v選項(xiàng),以便排查故障。
第4步:完善scanimage選項(xiàng)
如果你打算使用OCR處理文本,或者不需要顏色,那么300 DPI分辨率和黑白是兩個(gè)典型的選項(xiàng)。首先,這縮小了文件尺寸。scanimage -d [設(shè)備名稱] -format=tiff -mode Lineart -resolution和300 > [文件名稱]是兩個(gè)典型的選項(xiàng)。
第5步:創(chuàng)建掃描腳本
我們將使用進(jìn)行掃描的命令行字符串創(chuàng)建第一個(gè)腳本。使用一個(gè)文本編輯器,創(chuàng)建一個(gè)名為scan.sh的文件。添加#!/bin/bash作為頭一行。添加你所用的掃描儀系列作為第二行。保存該文件。在命令行鍵入chmod +x scan.sh,讓這個(gè)腳本成為可執(zhí)行腳本。將./scan.sh鍵入到終端,以便運(yùn)行它。接下來(lái),我們?cè)诒匾碾A段可以創(chuàng)建諸如此類的額外腳本。你可以把這些腳本合并成一個(gè)長(zhǎng)腳本,也可以單獨(dú)調(diào)用不同的階段。
第6步:計(jì)算裁剪尺寸
用不著為這個(gè)階段的旋轉(zhuǎn)文檔而操心。你可以使用程序包管理器,安裝GIMP。在GIMP中打開(kāi)掃描后文檔,從工具面板中選擇裁剪工具。讓裁剪區(qū)覆蓋文檔的有效部分,然后在裁剪對(duì)話框中記下裁剪尺寸。如果你打算把迎面頁(yè)分割成不同頁(yè)面,就要記下適當(dāng)?shù)捻?yè)面尺寸。別在GIMP中進(jìn)行裁剪,因?yàn)槲覀兩院髸?huì)從命令行來(lái)進(jìn)行裁剪。
第7步:安裝ImageMagick
使用程序包管理器,將ImageMagick安裝到你的系統(tǒng)上。我們使用convert命令,與這個(gè)圖像處理器工具進(jìn)行交互。我們可以用它來(lái)旋轉(zhuǎn)和裁剪圖像,還可以用它來(lái)分割頁(yè)面。要注意:convert在選項(xiàng)前面使用了單破折號(hào)。
第8步:裁剪頁(yè)面
利用通過(guò)使用GIMP獲得的相關(guān)參數(shù),執(zhí)行裁剪任務(wù)。鍵入convert [圖像名稱] +repage -crop [x width]x[y width]+[x offset]+y[offset] [輸出名稱]。比如說(shuō),convert page1.png +repage -crop 2244×3113+1+1 page1_crop.png就會(huì)裁剪從上邊和左邊1個(gè)像素開(kāi)始、尺寸為2244 x 3113的矩形頁(yè)面。
第9步:旋轉(zhuǎn)頁(yè)面
如果你不得不雙面掃描頁(yè)面,不妨使用ImageMagick來(lái)旋轉(zhuǎn)頁(yè)面。convert [輸入名稱] -rotate 90 [輸出名稱]可以完成這項(xiàng)任務(wù)。
第10步:分割迎面頁(yè)
與之前一樣,使用GIMP的裁剪功能,算出裁剪頁(yè)面的確切尺寸。convert page1.tiff +repage -crop 2233×1579+0+1529 page1_a.tiff以及隨后的convert page1.tiff +repage -crop 2233×1546+0+0 page1_b.tiff,可以從兩個(gè)迎面頁(yè)創(chuàng)建兩個(gè)不同的文件。
第11步:創(chuàng)建預(yù)先處理的腳本
上面是一個(gè)示例的預(yù)先處理腳本。它創(chuàng)建了一個(gè)名為splits的目錄,然后旋轉(zhuǎn)每個(gè)掃描件,之后將其分割成按順序編號(hào)的兩個(gè)頁(yè)面。最后,它刪除經(jīng)過(guò)旋轉(zhuǎn)的文件。保存它,然后鍵入chmod +x命令,讓它成為可執(zhí)行腳本。
第12步:掃描儀批處理模式
使用針對(duì)多個(gè)頁(yè)面的-batch系列選項(xiàng)。要是你沒(méi)有送紙器,那就添加-batch-prompt選項(xiàng),以便每次掃描之間加以提示。此外,可以添加-batch=./$page_%03d.tiff,提供以"page"開(kāi)頭、以帶三個(gè)0的數(shù)字結(jié)尾的文件名稱。
第13步:在掃描儀中預(yù)先裁剪
你也許能夠在掃描儀中裁剪頁(yè)面,這可以帶來(lái)更小的文件和更快的操作,因?yàn)閽呙桀^沒(méi)必要掃過(guò)很遠(yuǎn)的距離。使用GIMP中的裁剪工具,在對(duì)話框中將單位由px(像素)改成mm(毫米),算出你所需要的尺寸和偏移量。要是結(jié)果證明以這種方式獲得的信息不準(zhǔn)確,不妨考慮改用原始的辦法,使用直尺。在scanimage命令行上,額外標(biāo)志的格式是-l [左邊] -x [寬度] -t [上邊] -y [高度].
第14步:雙面文檔
如果你要掃描雙面文檔,使用之前所說(shuō)的batch選項(xiàng),但要添加-batch-double選項(xiàng),以便將頁(yè)面數(shù)遞增2個(gè)。在第二次掃描時(shí),針對(duì)另一面,再次進(jìn)行同一番操作,不過(guò)添加-batch-start=2,讓編號(hào)遞增。
第15步:將掃描件轉(zhuǎn)換成PDF
你可以使用ImageMagick,將裝滿掃描后圖像的目錄轉(zhuǎn)換成PDF"書(shū)冊(cè)"。convert *.tiff output.pdf這個(gè)命令會(huì)創(chuàng)建一個(gè)多頁(yè)文檔。如果你需要插入標(biāo)題頁(yè),將其命名為page000.tiff,然后放到該目錄中。
第16步:借助Tesseract,使用OCR處理文本
不妨在測(cè)試頁(yè)上試一下OCR引擎。為此,鍵入tesseract [輸入文件名稱] [輸出文件]。別給輸出文件名稱添加文件擴(kuò)展名,因?yàn)槲募U(kuò)展名會(huì)由Tesseract來(lái)添加。請(qǐng)注意:Tesseract可以檢測(cè)出多列文本和迎面頁(yè)。
第17步:OCR批處理
使用下列Bash代碼,使用OCR處理裝滿掃描后頁(yè)面的目錄:for i in *.tiff ; do tesseract $i outtext$i; done;最終結(jié)果是一組文本文件。使用cat *.txt >[輸出文本文件],將這些文件結(jié)合起來(lái)。
第18步:文本格式化
默認(rèn)情況下,Tesseract會(huì)將回車符插入到之前源文本中出現(xiàn)的同一個(gè)位置。你可以使用下面這個(gè)命令:fmt -u [輸入文件] > [輸出文件],重新為文本文件制作格式。
第19步:在LibreOffice中編輯文本
只要將從前幾個(gè)步驟所得的輸出結(jié)果剪貼到LibreOffice Writer中。在這個(gè)階段,你可以控制編輯,并手動(dòng)編輯節(jié)頭等參數(shù)。你甚至可以插入來(lái)自原文檔的圖像。
第20步:從LibreOffice導(dǎo)出PDF文件
LibreOffice有一些內(nèi)置工具,可用于創(chuàng)建PDF文件。如果你最終敲定了布局和格式,就進(jìn)入到File(文件)>Export as PDF(導(dǎo)出為PDF文件)。由此處,點(diǎn)擊Export(導(dǎo)出),為文檔取個(gè)名稱。
第21步:可以編寫(xiě)腳本的PDF創(chuàng)建
使用程序包管理器,安裝iconv、ps2pdf和enscript這幾個(gè)程序包。鍵入iconv -f UTF-8 -t ISO-8859-1 -c [輸入文本文件][輸出文本文件],準(zhǔn)備好文本文件。鍵入enscript [文本文件] -p [輸出postscript文件.ps]。鍵入ps2pdf [.ps文件],將PostScript轉(zhuǎn)換成PDF。
原文鏈接:http://www.linuxuser.co.uk/tutorials/automatic-mass-scanning-of-documents-tutorial