PHP OCR 文字識別
隨著人工智能和機器學習的飛速發展,基于圖像和文本的 OCR 技術成為了一個重要的研究方向。 OCR 的全稱是 Optical Character Recognition,即光學字符識別。 OCR 技術可以將印刷出來的字符轉換成計算機能夠識別的文字,從而達到數字化處理的目的。 PHP 作為一種流行的服務器端腳本語言,也提供了多種 OCR 的解決方案,本文就要來詳細介紹一下 PHP OCR 的相關知識。
OCR 技術是在實現數字化轉換時進行文本自動識別最核心技術之一。例如,在圖書數字化、屏幕閱覽器、面孔識別、語音識別、身份證識別等方面,都需要使用 OCR 技術。假設我們有一張包含文字的圖片(如下圖),如何使用 PHP 對其中的文字進行識別呢?
![example image](https://i.imgur.com/ErPYYr8.png)
1. 使用 PHP 自帶的 GD 庫
GD 圖像庫 (GIF ,JPEG ,PNG和WBMP)為服務器端提供了處理多種圖像格式的可能性。 同樣, 可以使用 GD 庫預處理圖像并將其轉換為黑白圖像, 然后使用 PHP 的一些較為簡單的內置函數提取字符。下面的代碼就是使用 GD 庫實現的簡單 OCR 程序。
$im = imagecreatefrompng("fonts.png"); imagefilter($im, IMG_FILTER_GRAYSCALE); imagefilter($im, IMG_FILTER_THRESHOLD, 1); $w = imagesx($im); $h = imagesy($im); $letter_width = 8; $letter_height = 8; $space_between_letters = 1; // 每個字母識別 for ($y=0; $y<$h; $y+=$letter_height+$space_between_letters) { for ($x=0; $x<$w; $x+=$letter_width+$space_between_letters) { $letter = imagecreatetruecolor($letter_width, $letter_height); imagecopy($letter, $im, 0, 0, $x, $y, $letter_width, $letter_height); $sum = 0; // 像素計算 for ($i=0; $i<$letter_width; $i++) { for ($j=0; $j<$letter_height; $j++) { $rgb = imagecolorat($letter, $i, $j); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $value = ($r + $g + $b) / 3; $sum += $value; } } $avg = $sum / ($letter_width * $letter_height); if ($avg < 128) { echo "1"; } else { echo "0"; } imagedestroy($letter); } echo "<br>"; } imagedestroy($im);
2. 使用霍爾特變換進行 OCR
霍爾特變換是一種常見的 OCR 技術,可以通過尋找文本中重復的模式來進行文字識別。 使用霍爾特變換的一個重要的庫是 Tesseract OCR,這是一種由谷歌開發的,可以進行多語言 OCR 的免費工具。通過在 PHP 中調用該庫的接口實現 OCR,下面是一段簡單的代碼例子。
require_once("tesseract_ocr.php"); $tesseract = new TesseractOCR('test.jpg'); echo $tesseract->recognize();
其中,TesseractOCR 是一個 PHP 庫,可用于與 Tesseract OCR 引擎交互。
OCR 技術可以將紙質書籍或文獻數字化, 這是一個功能非常強大的技術。這項技術已經廣泛應用于圖像處理中。 PHP 作為一種流行的腳本語言,也有多種 OCR 的解決方案可用。本文主要介紹了兩種使用 PHP 進行 OCR 的方法:使用 PHP 自帶的 GD 庫和通過 Tesseract OCR 進行 OCR。 每種方式都適合不同的場景,選擇最佳的方式取決于使用場景。