Функция sub в regex может принимать функцию в качестве аргумента repl.
📄 Из документации:
If repl is a function, it is called for every non-overlapping occurrence of pattern. The function takes a single match object argument, and returns the replacement string.
То есть для каждого совпадения будет вызвана функция для вычисления замены вместо замены на одну и ту же строку для всех совпадений.
Иными словами, для замены разных совпадений на разные строки не потребуется запускать re.sub() много раз для каждой строки замены. Достаточно определить функцию, которая вернёт строку для каждого из совпадений.
Описание слишком запутанное🤔, давайте лучше рассмотрим на простом примере:
Создаем карту замены. То есть какие строки на какие требуется менять.
remap = {
'раз': '1',
'два': '2',
'три': '3',
'четыре': '4',
'пять': '5',
}
Пишем функцию поиска строки для замены. Единственным аргументом будет объект re.Match.
Используя данные этого объекта мы вычисляем замену on-the-fly!
def get_str(match: re.Match):
word = match.group(1)
return remap.get(word.lower()) or word
Пример текста.
text = '''Раз Два Три Четыре Пять
Вместе будем мы считать
Пять Четыре Три Два Раз
Мы считать научим вас
'''
Теперь запускаем re.sub и вместо строки замены (repl) подаём имя функции.
(Данный паттерн ищет отдельные слова в тексте)
>>> print(re.sub(r'(\w+)', get_str, text))
1 2 3 4 5
Вместе будем мы считать
5 4 3 2 1
Мы считать научим вас
Думаю, достаточно наглядно 🤓
#libs#regex
Image to Text OCR is a utility website made by Alejandro Akbal for extracting text from any image using #OCR.
This tool was made for those moments where you take a photo of some text and wish you could have it digitally.
https://github.com/AlejandroAkbal/Image-to-Text-OCR
Online: https://image-to-text-ocr.netlify.app/
🦉 LightOnOCR-1B: новая быстрая OCR-модель от LightOn
Модель дистиллирована из Qwen2-VL-72B-Instruct и обучена на корпусе из 17.6 млн страниц / 45.5 млрд токенов.
🔥 Главное:**
-1 B параметров
- позволяет обрабатывать 5.7 страниц/с на одном H100 (это примерно ≈ 493 000 страниц за день)
- Распознаёт таблицы, формы, уравнения и сложные макеты
- 6.5× быстрее dots.ocr, 1.7× быстрее DeepSeekOCR
- Расходы < $0.01 за 1000 страниц A4
📊 Качество (Olmo-Bench):
- Превосходит DeepSeekOCR
- Сопоставима с dots.ocr (при этом модель в 3 раза меньше по весу)
- +16 пт к Qwen3-VL-2B-Instruct
Эта моделька - отличный баланс качества, скорости и стоимости.
🟢Модель 1B: https://huggingface.co/lightonai/LightOnOCR-1B-1025
🟢Модель 0.9B (32k): https://huggingface.co/lightonai/LightOnOCR-0.9B-32k-1025)
🟢Блог LightOn:https://huggingface.co/blog/lightonai/lightonocr
🟢Демка: https://huggingface.co/spaces/lightonai/LightOnOCR-1B-Demo
@ai_machinelearning_big_data
#ocr#ml
📄 DeepSeek-OCR - модель для распознавания текста 🔍
DeepSeek выпустили мощную OCR-модель, способную преобразовывать изображения документов прямо в Markdown или текст.
Что умеет:
- Распознаёт текст на изображениях и в PDF
- Работает с документами, таблицами и сложными макетами
- Поддерживает разные режимы: Tiny, Small, Base, Large
- Оптимизирована под GPU (PyTorch + CUDA 11.8)
- MIT-лицензия — можно свободно использовать и модифицировать
DeepSeek-OCR достигает высокой точности и эффективности за счёт компрессии визуальных токенов. На Omnidocbench - лучшая точность при минимуме визуальных токенов, превосходит другие OCR-модели по эффективности и скорости.
🟠HF: https://huggingface.co/deepseek-ai/DeepSeek-OCR
🟠Github: https://github.com/deepseek-ai/DeepSeek-OCR
🟠Paper: https://github.com/deepseek-ai/DeepSeek-OCR/blob/main/DeepSeek_OCR_paper.pdf
@ai_machinelearning_big_data
#ocr#DeepSeek