2012-02-17 64 views
6

我想要製作一個應用程序。我們有牆上安裝的時間表板,它們在白色背景上用黑線分成小矩形。磁性名稱標籤被放置在特定的分區中以指示此人將在該單元中工作。這個系統非常適合人們之間的溝通,但是我想自動將這個時間表信息自動保存到數據庫中。開源辦法實時圖像處理OCR應用程序?

我在設想一個系統,其中一個攝像頭設置在固定位置,側重於日程表板。定期相機將拍攝該板的圖片。我想寫一些代碼來解密哪個名字標籤在哪個區域。這將需要一些OCR或符號識別。每個姓名標籤上都有很大的數字,我將用它來標識姓名標籤的人。

我在處理新的編程問題時自然會去Python。我發現這個帖子 - >python image recognition看起來像一個好地方開始(與PIL和numpy)。

你知道這樣做的好方法嗎?

更新:我已經嘗試過SimpleCV,現在看起來很好。

+2

如果您將條形碼添加到名稱標籤或將數字寫入旨在簡化OCR的字體中,我認爲您可以更輕鬆地完成任務。 – 2012-02-17 15:40:31

回答

4

這實際上是一個相當難的問題,即使它看起來很簡單。但是,通過對圖像進行一些操作以使其易於管理,您可以更輕鬆地進行操作。我有以下建議:

  • 試着讓它的相機直觀地看着主板上的合理鏡頭,這樣在邊緣上的圖像失真最小,並且沒有視角失真。
  • 鑑於您將拍攝偶爾的圖像進行分析,我認爲表演絕不是問題,因此拍攝高分辨率圖像時,請使用閃光燈或長時間曝光(因爲您拍攝的所有東西都是靜止的)以獲得最佳的圖像質量。
  • 如果您所期望的不同標籤數量不是太大,您可能會發現僅通過template matching就可以嘗試將圖像中這些標籤的參考圖像匹配,而不是進行完整的數字OCR。如果圖像足夠好,這會更容易工作。 python opencv interface非常完整。
  • 高性能標記對您在標籤中包含barcodes的問題有很好的評論。我會添加QR codes的選項,但這是一回事。兩者都很容易檢測,並且有很好的庫可以幫助您閱讀它們。
  • 如果你決定你確實需要OCR,你應該看看可用的OCR包,而不是嘗試推出自己的OCR包。對於tesseract引擎或OCRopuspython interface,請嘗試pytesser
+0

從我使用非常類似的圖像捕捉設置的經驗來看,如果您嘗試拍攝的表面具有高度反射性,例如大多數白板都是閃光燈,並且閃光燈與閃光燈位於相同的位置,則閃光燈通常非常無益相機。但是,良好的照明,但是來,是最有用的。 – 2012-02-20 09:33:10

+0

是的,如果您使用閃光燈,您應該定位以便反射b不會成爲問題。一般來說,你應該從你能得到的圖像開始。 – 2012-02-20 09:38:25

+0

我喜歡條形碼或QR碼的想法。也許每個帶有條形碼的標籤都有一個明確的邊界。 – 2012-02-20 13:26:14

2

既然你提到你想用Python來解決這個問題,也許你可以看看SimpleCV。它將爲您提供一種簡單的方法從相機中抓取圖像並進行基本的圖像處理。

0

我非常同意jilles de witt認爲OCR將是一個非常艱鉅的圖像分析任務,從零開始開發。閱讀代碼是一個更好的選擇,但這也將是難以編程的,並且需要其他人已經注意到的複雜或有些具有挑戰性的成像。但是,對於這個應用程序,你真的不需要實施OCR或正式的條形碼,QR或其他二維碼。

由於您的應用程序僅限於有限數量的目標,因此您可以製作自己的簡單代碼。例如,您可以在每個人的姓名後放置一個2x2數組中的0到4個大點。這個簡單的示例代碼唯一標識了16個獨特標籤,並且這些特徵比正式代碼更容易成像,提取和解碼。如果代碼位置不一致,請添加一個定位符行。