OCR(Optical Character Recognition):光學字元識别,是指對圖檔檔案中的文字進行分析識别,擷取的過程。
一、簡介
Tesseract-OCR依賴圖像庫Leptonica。 Leptonica是一個開源的圖像處理和圖像分析庫。它主要包括的操作有:位圖操作、仿射變換、形态學操作、連通區域填充、圖像變換及像素掩模、融合、增強、算術運算等操作。
在使用Leptonica的時候,它依賴于開源的zlib、libjpeg、libpng、libtiff、giflib。
(1)zlib是一個很好的壓縮、解壓縮庫。它的license是zlib授權,類似BSD。
(2)libjpeg是一個完全用C語言編寫的庫,包含了被廣泛使用的JPEG解碼、JPEG編碼和其它的JPEG功能的實作。它的license類似BSD。
(3)libpng是官方的PNG參考庫,它支援幾乎所有的PNG功能,它也是可擴充的。它使用zlib庫作為壓縮引擎。它的license是permissive free software license,類似BSD。
(4)libtiff是一個用來讀寫TIFF檔案的開源庫,它依賴于libjpeg和zlib。它的license是BSD。
(5)giflib是一個讀、寫GIF圖像的開源庫,它的license類似BSD。
二、編譯環境搭建
1、系統平台:windows10 - VS2013
2、Leptonica編譯,可以直接從以下路徑下載下傳對應的VS版本:
https://github.com/charlesw/tesseract-vs2012
https://github.com/tesseract4java/tesseract-vs2013
載入相應的VS後,編譯出對應的庫
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiQ3chVEa0V3bT9CX5RXa2Fmcn9CXwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwVPjJjW1o1RkZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DMzADNxADN3EDOxMDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
編譯完成之後,會産tesseract-vs2013-master目錄下生産一個buidl目錄,build\lib\Win32下的庫就是我們所需的各種庫。
3、Tesseract-OCR
下載下傳位址:https://github.com/charlesw/tesseract-vs
把 tesseract-vs2013-master/release 下面的include, lib目錄整體複制到:\tesseract-ocr,複制好的目錄結構如下:
.. /tesseract-ocr/
+---include/
+---lib/
+---tesseract-vs-master/
+---tesseract-vs2013-master/
然後就可以進行編譯了,接下來就可以進行驗證了。
【測試】
1、指令行,執行:tesseract.exe dst2.png out
out就是輸出的檔案,共檢測到49個檔案。
三、ViewerDebugging調試工具
首先,在tesseractmain.cpp檔案中,加入以下代碼:
if (!renderers.empty()) {
if (banner) PrintBanner();
//加入的調試資訊
api.SetVariable("tessedit_dump_pageseg_images", "true"); //show no lines and no image picture
api.SetVariable("textord_show_blobs", "true"); //show blobs result
api.SetVariable("textord_show_boxes", "true"); //show blobs' bounding boxes
api.SetVariable("textord_tabfind_show_blocks", "true"); //show candidate tab-stops and tab vectors
api.SetVariable("textord_tabfind_show_reject_blobs", "true"); //show rejected blobs
api.SetVariable("textord_tabfind_show_initial_partitions", "true"); //show initial partitions
api.SetVariable("textord_tabfind_show_partitions", "1"); //show final partitions
api.SetVariable("textord_tabfind_show_initialtabs", "true"); //show initial tab-stops
api.SetVariable("textord_tabfind_show_finaltabs", "true"); //show final tab vectors
api.SetVariable("textord_tabfind_show_images", "true"); //show image blobs
bool succeed = api.ProcessPages(image, NULL, 0, renderers[0]);
if (!succeed) {
fprintf(stderr, "Error during processing.\n");
exit(1);
}
其次, 必須要生成ScrollVIew.jar包才能觸發ViewerDebugging工具。在源碼的java目錄下有ScrollView源碼,但是沒有對于的jar包,而ScrollView.jar需要依賴以下的jar包:
piccolo2d-core-3.0.jar
piccolo2d-extras-3.0.jar
下載下傳後(請點選),就可以進行調試了。效果如下: