程式會考慮所有在水平方向上與搜尋區域相交的文字物件(在垂直方向上,物件必須完整落在搜尋區域內)。接著會將這些文字物件分組為行。行是由左至右建立的。當空白的最大長度(由 Max. space length 屬性設定)被超出時,程式會停止建立該行。在產生的各行中,程式會識別字元字串,每個字串只包含某一個使用者定義字元集中的字元。以類似的方式,程式會將行拆分成多個片段。接著,程式會為每個片段建立一個假設。根據是否選取 Allow embedded hypotheses,假設會依兩種不同的原則來建立。假設程式在前一個階段偵測到三個片段。如果選取了 Allow embedded hypotheses,則假設會如下建立:hypothesis 1: fragment 1hypothesis 2: fragment 1 + fragment 2hypothesis 3: fragment 1 + fragment 2 + fragment 3hypothesis 4: fragment 2hypothesis 5: fragment 2 + fragment 3hypothesis 6: fragment 3對於每個假設,程式會檢查每個字元集中字元所佔的比例是否未超過 Portion in text, % 欄位中設定的值。類似地,程式也會檢查非字母字元的百分比是否未超過 Allowed errors 欄位中設定的值。如果其中任一檢查失敗,則不會建立該假設。如果未選取 Allow embedded hypotheses,上述清單中的嵌入式假設會被捨棄。嵌入式假設是指在上述清單中被包含於另一個假設之內的那些假設。如果所有假設都通過了檢查,則只會保留下列假設:fragment 1 + fragment 2 + fragment 3。因此,如果未選取 Allow embedded hypotheses,程式會在滿足所有條件的前提下,建立長度最大的假設。即使嵌入式假設被排除,假設之間仍可能互相交錯。這可能是一個獨立的字元或單字,或是一串字元,它們是其他假設的一部分,但本身並未建立出獨立的假設。例如,程式可能建立兩個假設(即兩個字串)——一個以某個字或片語結尾,另一個以該字或片語開頭。例如:hypothesis 1: fragment 1 + fragment 2hypothesis 2: fragment 2 + fragment 3一旦產生了所有可能的假設,程式會為每個假設計算搜尋條件品質(這是估計某個假設在多大程度上符合 Search Conditions 中設定的搜尋限制的數值)。在此階段,品質是根據下列條件計算的:假設的字元長度是否落在 Character count 屬性指定的模糊區間內,該行中總間距長度是否落在 TotalGapLength 指定的模糊區間內,以及該行中的單字數量是否落在 Word count 指定的模糊區間內。假設的整體品質是將所有這些品質值相乘後得到的結果。