#comments-start
Скрипт предназначен для переноса блоков-картинок из проектов FR8 в файл-задание для SK.
Порядок работы:
1. Вручную или в автоматическом режиме в FineReader'е разметить страницы на блоки. Сохранить проект.
2. Запустить DjVuOCR 2.3. и сделать Dump Pictures, указав папку проекта FR и имя txt-файла.
3. Открыть страницы в SK, пометить все страницы галками (mark all files).
4. Сохранить задание SK в spt-файл и закрыть SK.
5. Запустить скрипт. Скрипт попросит указать txt файл из п.2 и spt файл из п.4.
Скрипт создаст новый spt файл, который можно загрузить в SK.

Внимание: Файл-задание после п.4 не должен содержать зон.
         В настройках FR - запретить определять ориентацию страницы.

#comments-end
Dim $PicTable[2000][162] ; max 2000 pages, 40 pictures/page
Dim $i
$file = FileOpen(InputFRFile(), 0)
While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    If StringLeft($line, 13) = 'Picture Frame' Then
        WriteTable()
        $PicTable[0][0] = $PicTable[0][0] + 1
    EndIf
WEnd
FileClose($file)
$sk_filename = InputSKFile()
$num = 0
$sk_filename_new = StringTrimRight($sk_filename, 4) & '_new.spt'
$file_sk = FileOpen($sk_filename, 0)
$file_sk_new = FileOpen($sk_filename_new, 2)
$j = 1
$m = 0
$t = 0
While 1
    $line = FileReadLine($file_sk)
    If @error = -1 Then ExitLoop
    If StringLeft($line, 3) = '[B]' And $t = 0 Then
        $t = 1
        $substr = StringSplit($line, ",")
        $line = $substr[1]
        For $p = 2 To $substr[0] - 2
            $line = $line & ',' & $substr[$p]
        Next
        $line = $line & ',' & $PicTable[0][0] & ',' & $substr[$substr[0]]
    EndIf
    If StringLeft($line, 7) = '[FNAME]' Then
        $m = $m + 1
        FileWriteLine($file_sk_new, $line)
        If $m = $PicTable[$j][0] Then
            $line = FileReadLine($file_sk)
           
            $substr = StringSplit($line, ",")
            $line = $substr[1]
            For $p = 2 To $substr[0] - 15
                $line = $line & ',' & $substr[$p]
            Next
            $line = $line & ',' & $PicTable[$j][1] & ',0,0,0,0,0,0,0,0,0,0,1,1,' & $PicTable[$j][1] & ',0'
           
            FileWriteLine($file_sk_new, $line); [B]....
            $line = '[X]='
            For $p = 1 To $PicTable[$j][1]
                $line = $line & '(' & $PicTable[$j][$p * 4 - 2] & ',' & $PicTable[$j][$p * 4] & ',' & $PicTable[$j][$p * 4 - 1] & ',' & $PicTable[$j][$p * 4 + 1] & ');'
            Next
            FileWriteLine($file_sk_new, $line); [X]
           
            $line = '[X1]='
            For $p = 1 To $PicTable[$j][1]
                $line = $line & (99 + $p) & ','
            Next
            FileWriteLine($file_sk_new, $line); [X1]
           
            $line = '[X2]='
            For $p = 1 To $PicTable[$j][1]
                $num = $num + 1
                $line = $line & '(' & (99 + $p) & ',' & $num & ',3,1,0,9,0,0,0,0,0,0,0,0,0,0,0,0),'
            Next
            FileWriteLine($file_sk_new, $line); [X2]
            $j = $j + 1
        EndIf
    Else
        FileWriteLine($file_sk_new, $line)
       
    EndIf
   
WEnd
FileClose($file_sk)
FileClose($file_sk_new)
Func InputFRFile()
    Local $var
    $var = FileOpenDialog("Select dump pictures file (after DjvuOCR v.2.3)", "", "txt (*.txt;)", 1)
    Return $var
EndFunc   ;==>InputFRFile

Func InputSKFile()
    Local $var
    $var = FileOpenDialog("Select SK task file ", "", "spt (*.spt;)", 1)
    Return $var
EndFunc   ;==>InputSKFile

Func WriteTable()
    $substr = StringSplit($line, '=')
    $item = Int($substr[2])
    $frfnum = StringRight($substr[3], 9)
    $frfnum = StringLeft($frfnum, 4)
    $frfnum = Int($frfnum)
    If $PicTable[$i][0] <> $frfnum Then $i = $i + 1
    $PicTable[$i][0] = $frfnum
    For $k = 1 To $item
        $coordLine = FileReadLine($file)
        $coord = StringSplit($coordLine, " ", 1)
        $PicTable[$i][2 + ($PicTable[$i][1]) * 4 + ($k - 1) * 4] = Int($coord[5])
        $PicTable[$i][3 + ($PicTable[$i][1]) * 4 + ($k - 1) * 4] = Int($coord[6])
        $PicTable[$i][4 + ($PicTable[$i][1]) * 4 + ($k - 1) * 4] = Int($coord[7])
        $PicTable[$i][5 + ($PicTable[$i][1]) * 4 + ($k - 1) * 4] = Int($coord[8])
    Next
   
    $PicTable[$i][1] = $PicTable[$i][1] + $item
   
EndFunc   ;==>WriteTable
Hosted by uCoz