Распознавание текста в браузере и графика на Python

Выпуск № 54 ·

Проекты на C

  1. libevent

    Лёгкая и производительная библиотека уведомлений о событиях на C. Работает по событийной модели и поддерживает разные механизмы мультиплексирования ввода-вывода: epoll, poll, select, kqueue и другие. libevent предоставляет единый интерфейс к этим системным механизмам, API более высокого уровня и переносимость между платформами.

Проекты на C#

  1. dotnet-docker

    Docker-образы для .NET Core и его инструментов.

  2. machinelearning

    Фреймворк машинного обучения на C# с открытым кодом от Microsoft. Поддерживает классификацию, регрессию, кластеризацию и другие задачи. Доступны учебные материалы и видео. Пример кода:

    var dataPath = "sentiment.csv";
    var mlContext = new MLContext();
    var loader = mlContext.Data.CreateTextLoader(new[]
        {
            new TextLoader.Column("SentimentText", DataKind.String, 1),
            new TextLoader.Column("Label", DataKind.Boolean, 0),
        },
        hasHeader: true,
        separatorChar: ',');
    var data = loader.Load(dataPath);
    var learningPipeline = mlContext.Transforms.Text.FeaturizeText("Features", "SentimentText")
            .Append(mlContext.BinaryClassification.Trainers.FastTree());
    var model = learningPipeline.Fit(data);
    
    var predictionEngine = mlContext.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);
    var prediction = predictionEngine.Predict(new SentimentData
    {
        SentimentText = "Today is a great day!"
    });
    Console.WriteLine("prediction: " + prediction.Prediction);

Проекты на C++

  1. drogon

    Асинхронный неблокирующий высокопроизводительный веб-фреймворк на C++. Благодаря широким возможностям и простому освоению помогает создавать разные типы производительных веб-приложений на C++. Пример кода:

    #include <drogon/drogon.h>
    using namespace drogon;
    int main()
    {
        app().setLogPath("./")
             .setLogLevel(trantor::Logger::kWarn)
             .addListener("0.0.0.0", 80)
             .setThreadNum(16)
             .enableRunAsDaemon()
             .run();
    }
    drogon

Проекты на CSS

  1. css-diner

    Онлайн-игра для изучения CSS-селекторов. Простая анимация помогает новичкам понять, как разные селекторы находят элементы страницы. Сайт на английском, но объяснения достаточно понятны. Попробовать онлайн.

    css-diner

Проекты на Go

  1. go-admin

    Система управления правами с разделёнными клиентской и серверной частями на Gin, Vue и Element UI. Подробная документация и видеоуроки подойдут новичкам. Особенности:

    • Следует принципам проектирования RESTful API.
    • Использует Gin Web API и предлагает множество промежуточных компонентов: аутентификацию, CORS, журнал доступа, идентификатор трассировки и другие.
    • Поддерживает документацию Swagger.
    • И многое другое.
    go-admin
  2. go-micro

    Модульный фреймворк на Go для быстрого создания микросервисов. Пример кода показан на иллюстрации.

    go-micro
  3. now

    Библиотека для работы со временем на Go. Небольшой проект с понятным кодом и множеством примеров:

    import "github.com/jinzhu/now"
    
    time.Now() // 2013-11-18 17:51:49.123456789 Mon
    
    now.BeginningOfMinute()        // 2013-11-18 17:51:00 Mon
    now.BeginningOfHour()          // 2013-11-18 17:00:00 Mon
    now.BeginningOfDay()           // 2013-11-18 00:00:00 Mon
    now.BeginningOfWeek()          // 2013-11-17 00:00:00 Sun
    now.BeginningOfMonth()         // 2013-11-01 00:00:00 Fri
    now.BeginningOfQuarter()       // 2013-10-01 00:00:00 Tue
    now.BeginningOfYear()          // 2013-01-01 00:00:00 Tue
    
    now.WeekStartDay = time.Monday // Set Monday as first day, default is Sunday
    now.BeginningOfWeek()          // 2013-11-18 00:00:00 Mon
    
    now.EndOfMinute()              // 2013-11-18 17:51:59.999999999 Mon
    now.EndOfHour()                // 2013-11-18 17:59:59.999999999 Mon
    now.EndOfDay()                 // 2013-11-18 23:59:59.999999999 Mon
    now.EndOfWeek()                // 2013-11-23 23:59:59.999999999 Sat
    now.EndOfMonth()               // 2013-11-30 23:59:59.999999999 Sat
    now.EndOfQuarter()             // 2013-12-31 23:59:59.999999999 Tue
    now.EndOfYear()                // 2013-12-31 23:59:59.999999999 Tue
    
    now.WeekStartDay = time.Monday // Set Monday as first day, default is Sunday
    now.EndOfWeek()                // 2013-11-24 23:59:59.999999999 Sun
  4. pgweb

    Кроссплатформенный инструмент управления PostgreSQL на Go. Запускает локальный сервер и открывает интерфейс в браузере, что обеспечивает работу на разных платформах. Варианты запуска:

    三种方式:
    
    参数:pgweb --host localhost --user myuser --db mydb
    URL:pgweb --url postgres://user:password@host:port/database?sslmode=[mode]
    Socket:pgweb --url "postgres:///database?host=/absolute/path/to/unix/socket/dir"
    pgweb

Проекты на Java

  1. roncoo-pay

    Платёжная система для интернет-бизнеса на Java с открытым кодом. Включает отдельные подсистемы учётных записей, пользователей, подключения платежей, транзакций, сверки и расчётов. Пригодится тем, кто изучает платёжные технологии. Структура проекта:

    roncoo-pay
    |
    ├── roncoo-pay-app-notify //商户通知模块
    |
    ├── roncoo-pay-app-order-polling //订单轮询模块
    |
    ├── roncoo-pay-app-reconciliation //交易对账模块
    |
    ├── roncoo-pay-app-settlement //交易结算模块
    |
    ├── roncoo-pay-common-core //公共基础模块,不需要单独部署
    |
    ├── roncoo-pay-service //核心业务模块,不需要单独部署
    |
    ├── roncoo-pay-web-boss //运营后台模块
    |
    ├── roncoo-pay-web-gateway //支付网关模块
    |
    ├── roncoo-pay-web-merchant //商户后台模块
    |
    ├── roncoo-pay-web-sample-shop //模拟商城模块
  2. screw

    Простой и удобный генератор документации по структуре таблиц базы данных.

    screw

Проекты на JavaScript

  1. IconPark

    Библиотека с более чем 1 200 качественными иконками с открытым кодом и интерфейсом для их настройки. Изменяя свойства одного SVG-файла, можно получать разные темы. Поддерживается экспорт в SVG, PNG и компоненты для Vue и React. Экономит время дизайнерам и разработчикам.

    IconPark
  2. mind-elixir-core

    Бесплатная JavaScript-библиотека для создания интеллект-карт с открытым кодом. Попробовать онлайн.

    mind-elixir-core
  3. next

    Набор компонентов интерфейса для корпоративных внутренних систем. Помогает дизайнерам и фронтенд-разработчикам согласовывать работу, сохранять единый вид продукта и ускорять разработку. Например, после изменения цветов дизайнер может собрать тему в NPM-пакет, а разработчик — применить её и воспроизвести дизайн.

    next
  4. tesseract.js

    JavaScript-библиотека распознавания текста на изображениях с поддержкой многих языков. Позволяет извлечь текст и скопировать его. Основана на OCR-движке Tesseract и удобна для реализации распознавания прямо в браузере. Попробовать онлайн.

    tesseract.js

Проекты на Kotlin

  1. DateTimePicker

    Лаконичный и красивый компонент выбора даты и времени. Интерфейс можно полностью настроить; встроенное всплывающее окно выбора основано на Google BottomSheetDialog.

    DateTimePicker

Проекты на Python

  1. Computer-Networking-A-Top-Down-Approach-NOTES

    Практические задания к книге «Компьютерные сети. Нисходящий подход». Содержит условия задач и решения на Python; раздел лабораторных работ с Wireshark переведён из официальных материалов.

  2. learn-python3

    Учебник по Python 3 в формате Jupyter Notebook: удобно читать и запускать примеры. Есть упражнения для новичков. Единственный минус — материал на английском, но изложен достаточно понятно.

  3. livebox

    Платформа, объединяющая прямые трансляции видео, телевидение высокой чёткости и радиостанции. На момент выпуска поддерживала более 30 видеотрансляций, 50 телеканалов и 70 радиостанций. Полноценный веб-проект со следующим стеком:

    • Клиентская часть: Qt, Vue, Flutter и другие технологии.
    • Серверная часть: MySQL, Redis, Kafka или RabbitMQ, Elasticsearch и другие технологии.
    livebox
  4. readthedocs.org

    Исходный код известного сайта документации readthedocs.org. На нём размещены руководства Scrapy, requests, bootstrap-datepicker и других библиотек. Сайт написан на Django; файлов в проекте много, поэтому на изучение кода потребуется терпение.

  5. taichi

    Высокопроизводительный фреймворк для программирования компьютерной графики. Преобразует код Python в эффективный ассемблерный код, выполняемый на разных CPU и GPU: по сути, шейдеры можно писать синтаксисом Python. Taichi упрощает настройку окружения и перенос программ. Устанавливается командой pip install taichi; созданные программы работают в Windows, Linux и macOS. Это снижает порог входа в компьютерную графику. Пример:

    import taichi as ti
    
    ti.init(arch=ti.gpu)  # 指定编译后的函数在 GPU 上执行
    
    n = 320
    pixels = ti.field(dtype=float, shape=(n * 2, n))  # 提前声明数组存储类型,大小
    
    
    @ti.func  # 该函数将是被调用的过程函数
    def complex_sqr(z):
        return ti.Vector([z[0]**2 - z[1]**2, z[1] * z[0] * 2])
    
    
    @ti.kernel  # 该函数将被 Taichi 编译
    def paint(t: float):
        for i, j in pixels:  # 最外层循环会自动并行化
            c = ti.Vector([-0.8, ti.cos(t) * 0.2])
            z = ti.Vector([i / n - 1, j / n - 0.5]) * 2
            iterations = 0
            while z.norm() < 20 and iterations < 50:  # 其他语法和原生 Python 基本一致
                z = complex_sqr(z) + c
                iterations += 1
            pixels[i, j] = 1 - iterations * 0.02
    
    
    gui = ti.GUI("Julia Set", res=(n * 2, n))
    
    for i in range(1000000):
        paint(i * 0.03)
        gui.set_image(pixels)
        gui.show()
    taichi

Проекты на Rust

  1. rustlings

    Обучение синтаксису Rust через небольшие упражнения. Проект устанавливается простой командой. Затем нужно исправлять каждое задание, пока код не скомпилируется или не выдаст нужный результат, и переходить к следующему уровню. Запуск:

    安装:
    git clone https://github.com/rust-lang/rustlings
    cd rustlings
    git checkout tags/4.0.0 # or whatever the latest version is (find out at https://github.com/rust-lang/rustlings/releases/latest)
    cargo install --force --path .
    
    安装完后,运行:
    rustlings watch
    rustlings

Проекты на Swift

  1. ZLPhotoBrowser

    Лёгкий фреймворк для выбора фотографий. Прост в использовании и поддерживает просмотр, съёмку фото и видео из альбома, выбор перетаскиванием или жестом, редактирование и обрезку изображений и видео. Пример:

    // 使用起来非常简单
    let ac = ZLPhotoPreviewSheet()
    ac.selectImageBlock = { [weak self] (images, assets, isOriginal) in
        // your code
    }
    // 快速选择方法
    ac.showPreview(animate: true, sender: self)
    // 进入相册选择方法
    ac.showPhotoLibrary(sender: self)
    ZLPhotoBrowser

Искусственный интеллект

  1. computervision-recipes

    Рекомендации по построению систем компьютерного зрения и подборка примеров. Проекты на PyTorch и Jupyter охватывают классификацию изображений, поиск сходства, распознавание и отслеживание. Подойдут тем, кто изучает обработку изображений.

    computervision-recipes
  2. nsfw-filter

    Расширение браузера на TensorFlow.js для фильтрации изображений NSFW, в том числе с наготой и насилием.

    nsfw-filter
  3. seq2seq-couplet

    Генератор второй строки китайского парного стихотворения на основе глубокого обучения: задайте первую строку, и система предложит ответ. Автор попробовал и оценил результат как уместный и любопытный. Попробовать онлайн.

    seq2seq-couplet

Прочее

  1. Halfrost-Field

    Технический блог бывшего старшего серверного инженера Alibaba по прозвищу «Шуаншэнь». Автор сейчас в основном работает на Go, а до Alibaba несколько лет занимался фронтендом. Пишет о машинном обучении, Go, JavaScript, iOS, сетевых протоколах и других темах.

    Halfrost-Field
  2. hexo-theme-matery

    Тема для блога Hexo с адаптивным дизайном в стиле Material Design. Возможности:

    • Удобное отображение на компьютерах, планшетах и телефонах.
    • Карусель статей на главной странице и ежедневная смена изображения баннера.
    • Архив публикаций в виде временной шкалы.
    • Страница тегов с облаком слов и страница категорий с радарной диаграммой.
    • Подробная страница автора: сведения о себе, статистика публикаций, проекты, навыки, фотоальбом и другое.
    • Закрепление публикаций и поддержка пожертвований автору.
    • И другие функции.
    hexo-theme-matery
  3. highlight.js

    JavaScript-библиотека для подсветки кода на веб-страницах. Поддерживает разные языки программирования и стили оформления, проста в использовании. Пример:

    <link rel="stylesheet" href="/path/to/styles/default.css">
    <script src="/path/to/highlight.min.js"></script>
    <script>hljs.initHighlightingOnLoad();</script>
    <pre><code>...</code></pre>
    highlight.js
  4. L-ink_Card

    Код и руководство по созданию миниатюрной умной карты NFC. Автор проекта, инженер-энтузиаст Чжихуэй, снял демонстрационное видео на Bilibili (китайском видеохостинге). У него есть и другие интересные разработки.

    L-ink_Card
  5. lite

    Сверхлёгкий текстовый редактор на Lua. Исполняемый файл для Windows занимает около 300 КБ, при этом редактор красивый, быстрый и функциональный. Поддерживает пользовательские плагины и цветовые темы.

    lite
  6. ntfstool

    Бесплатная утилита для чтения и записи NTFS на компьютерах Apple. Позволяет работать с флешками и внешними дисками, на которые файлы были скопированы в Windows. Инструкция по установке.

    ntfstool

Открытые книги

  1. jshistory-cn

    Китайский перевод книги «20 лет JavaScript». Читать онлайн.

    jshistory-cn
  2. trpl-zh-cn

    Китайский перевод второго издания книги «Язык программирования Rust». Читать онлайн.

    trpl-zh-cn