#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