2012-05-27 19 views
3

我不太肯定要搜索什麼術語來,所以我的題目是質樸......這裏是工作流程我已經有了:模糊正則表達式,文本處理,詞法分析?

  1. 半結構化文檔掃描到文件。這些文件被OCR到文本。
  2. 將文本解析爲Python對象
  3. 對象被序列化(使用SQL,JSON等等)。

的文件結構是這樣的:

HEADER等等等等,頁###

等等

垃圾文字...

1.問題文本...

一直持續到現在。 A.選擇文字...

adsadsf。 B.另一種選擇......

2.另一個問題...

我需要提取的問題和選擇。問題在於,因爲文本是OCR輸出,所以偶爾會出現奇怪的替換,例如'2' - >'Z',這會使普通的正則表達式無用。我已經嘗試了Levenshtein模塊,它有幫助,但它需要預先知道編輯距離的預期。

我不知道我是否想創建一個解析器?一個詞法分析器?別的東西?這導致我失去了各種有趣但不相關的道路。指導將不勝感激。哦,同樣,文本通常來自特定的技術領域,所以一般的拼寫工具並不是那麼有用。

關於文檔的結構,沒有明確的視覺模式 - 像換行符或縮進 - 用的事實,「問題」,通常開始線除外。文檔上的垃圾可能導致字符出現在行的實際開始之前,這意味着沿着r'^ [0-9] +'的行不能可靠地工作。

雖然「問題,」始終以一個int,經過一段時間和空間的開始; OCR可以替換其他字符或跳過字符。這與Tesseract或Cunieform不是一個問題,而是紙質文檔的質量差。

注意:對於有問題的項目,已決定讓人工準備OCR文本比花時間編碼解決方案更好。不過,我仍然喜歡好的指針。

+0

您可以嘗試在它的一些形式的NLP的。拼寫錯誤有時會使NLP不準確,但它*應該*起作用。 – Blender

+0

如果這些文件都來自同一個來源,是否有一個合理的假設,錯誤的替代將會不斷應用?如果是這樣,你可以將它們分解成你的正則表達式。 –

+0

您可以添加更多關於文檔結構的信息嗎?你能指定如何看問題的部分,是否足夠清楚機器尋找它(例如問題開始於兩個換行符之後,並且沒有兩個換行符之前)。結束以下問題是在同一行嗎? –

回答

1

從您的發言有什麼理解你可能會試圖建立一個解析器。 隨着模糊的要求和例子提供,我建議你先看看nltk.org。另一種方法是gate.ac.uk