Integration ABBYY FineReader для распознавания текста
ABBYY FineReader — коммерческий OCR-движок с одним из лучших качеств распознавания в индустрии, особенно для сложных документов: исторические материалы, сложная типографика, многоколоночные документы, смешанные языки. ABBYY предоставляет SDK (FineReader Engine, Cloud OCR SDK) для интеграции в бизнес-системы.
ABBYY Cloud OCR SDK
import requests
import time
import base64
class ABBYYCloudOCR:
def __init__(self, app_id: str, password: str):
self.app_id = app_id
self.password = password
self.base_url = 'https://cloud.ocrsdk.com'
def process_image(self, image_path: str,
language: str = 'Russian,English',
output_format: str = 'txt') -> str:
# Отправка задачи
with open(image_path, 'rb') as f:
response = requests.post(
f'{self.base_url}/processImage',
params={
'language': language,
'exportFormat': output_format,
'textType': 'normal'
},
data=f.read(),
auth=(self.app_id, self.password),
headers={'Content-Type': 'application/octet-stream'}
)
task_id = response.json()['taskId']
# Ожидание результата
while True:
status = self._get_task_status(task_id)
if status['status'] == 'Completed':
return self._download_result(status['resultUrl'])
elif status['status'] == 'ProcessingFailed':
raise RuntimeError('ABBYY processing failed')
time.sleep(1)
def process_document(self, pdf_path: str,
language: str = 'Russian,English') -> dict:
"""Обработка многостраничного PDF с сохранением структуры"""
with open(pdf_path, 'rb') as f:
response = requests.post(
f'{self.base_url}/processDocument',
params={
'language': language,
'exportFormat': 'docx', # сохраняет форматирование
'textType': 'typewritten'
},
data=f.read(),
auth=(self.app_id, self.password),
headers={'Content-Type': 'application/octet-stream'}
)
task_id = response.json()['taskId']
return self._wait_and_download(task_id)
ABBYY FineReader Engine SDK (on-premise)
Для требований к локальной обработке данных — FineReader Engine:
# Псевдокод для FineReader Engine SDK (C++ binding через ctypes или SWIG)
import finereader_engine as fre
engine = fre.Engine()
engine.initialize(license_path='license.xml')
processor = engine.create_processor()
processor.add_image('scan.tif')
processor.set_recognition_language(['Russian', 'English'])
processor.set_output_format(fre.OutputFormat.TXT)
result = processor.recognize()
text = result.get_text()
engine.shutdown()
Когда выбирать ABBYY
ABBYY оправдан при:
- Исторические документы, старые шрифты (дореформенная русская орфография, готический шрифт)
- Многоколоночные газеты и журналы
- Документы с низким контрастом, пятнами, сложным фоном
- Требование конвертации PDF с сохранением форматирования (PDF/A, DOCX)
- Сравнительный тест на специфических документах: ABBYY выигрывает у cloud-сервисов
Сравнение с альтернативами
| Критерий | ABBYY | Google Vision | AWS Textract | PaddleOCR |
|---|---|---|---|---|
| Качество на сложных документах | Лучшее | Отличное | Хорошее | Хорошее |
| Исторические/архивные тексты | Лучшее | Среднее | Среднее | Среднее |
| Сохранение форматирования | Отличное | Ограниченное | Ограниченное | Нет |
| On-premise | Да (Engine SDK) | Нет | Нет | Да |
| Стоимость | Высокая | Средняя | Средняя | Бесплатно |
Режимы экспорта
ABBYY поддерживает экспорт в: TXT, DOCX, XLSX (таблицы), PDF/A (архивный PDF), XML (с координатами каждого слова), CSV, HTML. Для юридических документов PDF/A особенно важен: долгосрочный архивный формат.
| Задача | Срок |
|---|---|
| Integration Cloud OCR SDK | 3–5 дней |
| On-premise FineReader Engine | 1–2 недели |
| Пакетная обработка архивных документов | 2–4 недели |







