2014-09-24 55 views
0

我在OCR上工作。我們從發票中自動提取文本。當提取發票的內容時,它們存儲在一個文本文件中,然後我們編寫腳本根據我們的要求從文本文件中提取數據。用於日期提取和格式化的VB腳本

讓我卡住的一個要求是,我需要從未以任何特定格式寫入的文本文件中提取日期。它寫成12 08 2014成一行。我需要解壓縮並以dd/mm/yyyy格式打印出來。 此外,日期可以以任何格式編寫,例如2013年12月2日,12-12-2013,2013年8月12日等。我需要讀取日期並以dd/mm/yyyy的形式提取它。

有點問題。

  1. 日期沒有固定位置。大約有14000張發票,大多數都有日期和單獨格式的單獨位置。我收到發票的圖像和掃描的文本文件,我必須找到日期並嘗試對其進行格式化。

  2. 日期不在我可以使用的任何固定關鍵字之後。就像我在第一點中提到的那樣,它可以在發票號碼或費用或任何其他工作之後。所以使用關鍵字搜索它的想法並不適用。

  3. 這是最愚蠢的一個,假設我得到日期1/2/2011,我怎麼知道什麼是一天和什麼是月份?客戶剛剛進入了一個日期,我無法找到什麼日期和月份。它甚至有可能找到這個?

 
ORDERED SHIPPED 

28 08 14 03 09 14 E31192-00 1 
    CUST.NO. ItN1 R 0 R NO SALE MM 
    NOM CI WATT VOTRF NO nr CAMMANOF in-W.01M 
    ADDRESS HERE 
    Te1:(123)123-1234/ Fax:(123)795-1234 
    Facture/Invoice 
    OUTPS:R-103958989 CONE:MONS Taws> NET 60 DAYS 
    SOLD TO/VENDU A SHIPPED TO/EXPEDIE A 
+0

你到目前爲止嘗試過哪些代碼?如果你表現出一些努力,SO會更好。你問很多,但沒有表現出努力。 – Matt 2014-09-24 03:14:17

+0

你好馬特謝謝你的答案。它不是我正在尋找的代碼,我正在尋找一些想法。我可以從文本文件中提取我的日期,但接下來我遇到的問題是有太多格式,我必須手動對每張發票進行硬編碼。其中有超過14000個。我正在尋找一些基於我提到的問題提取的一般想法。 – 2014-09-24 04:00:14

回答

0

你已經問過這個。

你不知道,也沒有辦法知道。我們通常將其基於計算機的語言環境如何讀取日期。 yanks做m/d/y,而世界其他地區做d/m/y。在美國,Windows功能假設世界第一,世界其他地區爲第二。

至於年。兩位數字根據控制面板設置進行解釋。 29以下是2000年至2029年。30以上是1930年至1999年。

電腦無法讀取寫日期的人的頭腦。

+0

而你使用正則表達式來找到它。 「[0-3]?[0-9] [/ - ] [0-1]?[0-9] [/ - ] 2 [0-9] [0-9] [0-9]」這一個做空間,斜槓或hypen作爲分隔符的30 12 2014。 – Noodles 2014-09-24 16:42:42