Desktop version of MTRecognition


Обратите, пожалуйста, внимание! Если при запуске скрипта WTRec_Replace, Вы получили сообщение об ошибке "User-defined type not defined", источник ошибки - DataObject, то это значит, что в Word не подключена библиотека FM20.DLL. Чтобы ее включить необходимо открыть Visual Basic (в меню Word кликните на Разработчик и слева кликните на Visual Basic). В меню открывшегося Visual Basic выберите Tools -> Preferences и включите Microsoft Forms 2.0 Object Library.

как исправить ошибку User-defined type not defined DataObject в Word


Desktop-версия MTRecognition позволяет распознавать ТОЛЬКО формулы. Однако это не недостаток, а, скорее, преимущество. Формулы распознаются намного лучше, и вы можете выбрать, какую формулу нужно распознать как формулу MathType, а какую оставить для распознавания в виде текста в другой OSR, например, в FineReader.

Кратко рассмотрим последовательность шагов для распознавания PDF-документа с формулами.

  1. Создайте папку, в которой будут находиться все ваши рабочие файлы.
  2. Скопируйте MTRecognition.exe и файл PDF с текстом и формулами в эту папку. MTRecognition.exe скачайте бесплатно на этой странице (см. ниже).
  3. Создайте в рабочей папке еще одну папку, например, Images.
  4. Откройте PDF в Adobe Acrobat Pro, экспортируйте страницы PDF в изображения JPEG (Файл -> Экспорт в -> Изображения -> JPEG). В открывшемся диалоговом окне нажмите кнопку НАСТРОЙКИ, чтобы установить требуемое качество экспорта изображений.
  5. Запустите MTRecognition.exe, нажмите кнопку SETTINGS и введите ключ доступа и адрес электронной почты. Ключ доступа для распознавания 100 формул можно получить бесплатно, связавшись со мной по email: mvlad48@gmail.com. Если вам нужно больше формул для распознавания, вам нужно будет купить пакет для распознавания 1000 формул (подробнее см. на вкладке КУПИТЬ).
  6. Нажмите кнопку OPEN IMAGE и выберите изображение из папки Images.
  7. Используйте ползунок в верхней части окна программы, чтобы отрегулировать масштаб изображения (или используйте колесико мыши).
  8. Нажмите и удерживайте левую кнопку мыши и обведите формулу, отпустите кнопку мыши. Вокруг формулы появится контур в виде пунктирной линии.
  9. Нажмите R или CTRL + R или нажмите кнопку RECOGNIZE. Формула будет распознана и на месте формулы появится такой (например) #115# текст вместо формулы (115 - это номер формулы) .
  10. Если таким же образом выбрать еще что-то на изображении, например картинку, а затем нажать CTRL + DEL, то обведенная область изображения будет очищена. Таким образом можно удалить ненужные рисунки, части текста или грязные пятна.
  11. Размер шрифта, которые отображается #115# должен быть примерно таким же, как у другого текста на странице. Это улучшит качество распознавания этих тегов FineReader-ом. Чтобы настроить размер шрифта для тегов, нажмите кнопку SETTINGS и увеличьте или уменьшите значение в поле FSIZE. Допустимы ТОЛЬКО цифры .
  12. Сохраните изображение - нажмите кнопку SAVE IMG или кнопку S или CTRL + S.
  13. Число доступных к распознаванию формул в соответствии с Вашим ключом отображается большими зелеными цифрами после нажатия кнопки EXIT.
  14. После распознавания формулы открывается информационное окно, которое сообщает о статусе распознанной или нераспознанной формулы, а также информируем об ошибках и показывает количество доступных к распознаванию формул. Вы можете включить или выключить отображение этого информационного окна, нажав кнопку SETTINGS и установив или сняв флажок SHOW ALERT WINDOW.
  15. Аналогично обрабатываем все изображения, экспортированные из PDF.
  16. Теперь перейдите к папке, которую вы выделили для этой работы. Обратите внимание, что в ней появилась еще одна папка img_tmp. Она содержит файлы изображений формул (например, img_115.jpg). Это те самые изображения, которые были отправлены на распознавание. Кроме того, в этой же папке находятся файлы с расширением HST (например, img_115.hst). Это простые текстовые файлы, содержащие распознанные формулы в формате TeX. Рядом с MTRecognition.exe также появился файл MTRec_.log. Это история распознавания.
  17. Откройте папку Images. В ней появилась папка processed_images. В ней находятся обработанные файлы JPG с тегами #115# вместо формул. Обратите внимание, что там также есть файлы с расширением BAK - это те же файлы изображений, но они были сохранены программой автоматически. Иными словами, файлы JPG сохраняются при сохранении изображения лично Вами (при нажатии кнопки SAVE IMG, S или CTRL+S на клавиатуре) (см. п 12), а файлы BAK сохраняются автоматически после каждой операции. Чтобы из них получить JPG, просто исправьте BAK на JPG.
  18. Теперь создадим PDF из JPG-файлов из папки processed_images. Для этого откройте Adobe Acrobat Pro, а далее в меню Файл -> Создать -> Объединить файлы в один документ PDF, добавьте все JPG-файлы и нажмите кнопку ОБЪЕДИНИТЬ (вверху справа). Сохраните полученный PDF-файл. Распознайте его в (например) FineReader. Сохраните текст в MS Word.
  19. Откройте распознанный текст в MS Word. Теперь вам нужно, чтобы на месте #115# был бы текст из img_115.hst.
  20. Для этого установите скрипт (он написан на VISUAL BASIC) для MS WORD. Сам скрипт можно скопировать с этой страницы (см. в нижней ее части).

Давайте рассмотрим два варианта установки скрипта.

Первый вариант. Откройте Word, нажмите в меню Вид. В открывшейся панели нажмите МАКРОСЫ и выберите ЗАПИСЬ МАКРОСА. Откроется диалоговое окно. Неважно, какое имя будет у макроса. Оставьте имя по умолчанию. Макрос должен быть записан в Normal.dotm. Щелкните ОК. Это запустит запись. Сразу после этого снова нажмите МАКРОСЫ и выберите Остановить запись. Теперь снова нажмите МАКРОСЫ и выберите МАКРОСЫ из раскрывающегося меню. Выберите только что записанный макрос и нажмите ИЗМЕНИТЬ. Откроется окно Microsoft Visual Basic, и вы увидите приблизительно такой код: SUB MACROS1 END SUB. Выделите все от SUB до END SUB и вместо этого текста вставьте текст макроса WTRec_Replace (см. ниже).

Второй вариант. Откройте Word, щелкните в меню на вкладку Разработчик. Если у вас его нет, следуйте инструкциям на веб-сайте Microsoft - как включить панель Разработчик. Щелкните Visual Basic. В окне слева найдите элемент Normal, откройте его, откройте элемент Moduls и нажмите NewMacros. В главном окне справа введите текст макроса. Теперь, если закройте окно Microsoft Visual Basic и нажмете MACROS (Alt + F8). В списке макросов должен появиться WTRec_Replace.

  1. Выделите весь текст или часть текста в MS Word, которую нужно обработать (то есть в ней необходимо сделать замену #115# на код TeX), и запустите сценарий в Word. Для этого нажмите Alt + F8 и нажмите WTRec_Replace.
  2. Откроется диалоговое окно для выбора файлов .hst. Найдите папку и выберите ВСЕ файлы .hst , нажмите кнопку ОК, чтобы запустить сценарий.

ОЧЕНЬ ВАЖНО! УБЕДИТЕСЬ, что ваш текст не содержит символ $ до начала размещения формул в формате TeX. Если в тексте найдется $, удалите или замените его другими символами или комбинациями символов, в противном случае будет невозможно правильно преобразовать TeX в MathType.

  1. Еще раз проверьте, были ли заменены все теги #115# на формулы TeX, то есть постарайтесь найти # в тексте. Если они остались, выясните, почему это произошло. Может быть, есть только первый символ #, а второй не распознался, тогда добавьте его, или же числа не распознались правильно. Введите их и повторите шаги 21-22.
  2. Теперь у нас есть распознанный с кодом TeX вместо формул. Еще раз выделите весь текст или, если в нем много формул, небольшую его часть и выполните команду в меню MS Word: MathType -> Toggle TeX. Если формул много, ничего не произойдет. Выделите меньше текста и снова запустите Toggle TeX. Таким образом вы получите распознанный текст с формулами в формате MathType.

Cкачать MTRecognition.exe можно по ссылке




Macro WTRec_Replace

Sub WTRec_Replace()
 Const ForReading = 1
 Dim iPath, iNumber, iContent, toFind
 Dim ClbData As DataObject
 Dim startPos, endPos, Length As Integer
 iPath = "C:" 'You can change this path to something yours like this one Disk:\path\img_tmp\
 Dim fd As FileDialog
 Dim fs, f
 Set fd = Application.FileDialog(msoFileDialogFilePicker)
 Set fs = CreateObject("Scripting.FileSystemObject")
 Dim vrtSelectedItem As Variant
 With fd
    .AllowMultiSelect = True
    .InitialFileName = iPath
    .Filters.Add "Text", "*.hst", 1
    If .Show = -1 Then
    For Each vrtSelectedItem In .SelectedItems
        startPos = InStr(1, vrtSelectedItem, "img_")
        endPos = InStr(1, vrtSelectedItem, ".hst")
        Length = endPos - startPos - 4
        If (endPos - startPos > 10) Then
            Length = endPos - startPos - 12
            startPos = startPos + 8
        End If
        iNumber = Mid(vrtSelectedItem, startPos + 4, Length)
        toFind = "#" & iNumber & "#"
        Set f = fs.OpenTextFile(vrtSelectedItem, ForReading, False)
        iContent = f.ReadAll
        iContent = Mid(iContent, 4, Len(iContent) - 4)
        iContent = " " + iContent + " "
        Set ClbData = New DataObject
        ClbData.SetText iContent
        ClbData.PutInClipboard
        With ActiveDocument.Content.Find
         .ClearFormatting
         .Text = toFind
         .Replacement.ClearFormatting
         .Replacement.Text = "^c"
         .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
        End With
        f.Close
        Set f = Nothing
    Next
    Else
    End If
    End With
    Set fd = Nothing
    Set fs = Nothing
End Sub