Skip to main content

NeoTextSynthesizer - High-performance OCR training data generator

Project description

NeoTextSynthesizer (neots)

A high-performance, multi-threaded synthetic OCR training data generator built with C++.

NeoTextSynthesizer generates realistic text images with diverse fonts, backgrounds, and visual effects — ideal for training Text Recognition models.

Features

  • High Performance: Multi-threaded C++ core with shared glyph cache, background image cache, and lock-free rendering pipeline
  • Multi-language Support: Built-in support for Chinese (Simplified & Traditional), Japanese, Korean, English, German, French, Italian, Spanish, Russian, and extensible to any language
  • Flexible Text Sampling: Sequential corpus streaming and random character sampling with nested probability-weighted groups
  • Rich Visual Effects: Random fonts, font sizes, scale variations, italic/underline/strikethrough effects, diverse backgrounds (solid colors, gradients, real images)
  • Python Integration: Full Python API via nanobind with NumPy/PIL support
  • CLI Tools: neots for workspace initialization and batch generation, flat-wiki for Wikipedia corpus generation
  • Cross-platform: Supports Linux x86_64, Linux AArch64, macOS ARM64, and Windows x86_64

Installation

Install pre-built wheels from PyPI:

pip install neots

Quick Start

CLI Usage

# Initialize a workspace
neots init

# Generate 10,000 images
neots generate --total 10000

# Generate with custom config and workers
neots generate --config config.yaml --total 50000 --workers 8

# Show help
neots help

Wikipedia Corpus Generation (CLI)

# Generate a Chinese corpus from Wikipedia
flat-wiki --lang zh --output ./corpuses/zh.txt --min_len 5 --sample_count 10000

# Generate with vocabulary filter
flat-wiki -l en -o ./corpuses/en.txt -v dictionary.txt -n 5000

Python API

from neots import NeoTextSynthesizer

# Initialize from config file
synth = NeoTextSynthesizer.from_config_file("config.yaml")

# Initialize from a dictionary
config = NeoTextSynthesizer.get_default_config()
config["generate"]["output_height"] = 64
synth = NeoTextSynthesizer.from_config(config)

# Initialize from built-in default preset
synth = NeoTextSynthesizer.from_default()          # full preset
synth = NeoTextSynthesizer.from_default("minimal")  # minimal preset

# Batch generate (blocks until complete)
synth.generate(total=10000, workers=8, show_progress=True)

# Generate single image as PIL Image
img = synth.generate_instance("Hello World", type="PIL")
img.save("sample.png")

# Generate as NumPy array (H, W, 3) RGB
arr = synth.generate_instance("测试文本", type="numpy")

# Save directly to file
synth.generate_instance("サンプル", type="file", path="output.png")

# Export default config
NeoTextSynthesizer.output_default_dict("my_config.yaml", type="yaml")
NeoTextSynthesizer.output_default_dict("my_config.json", type="json")

Corpus Generation (Python API)

from neots import FlattenWikipediaGenerator

gen = FlattenWikipediaGenerator(
    lang="zh",                        # Language code
    output="./corpuses/zh.txt",       # Output file path
    vocab="dictionary_extended.txt",  # Optional: filter by vocabulary
    min_len=5,                        # Minimum line length
    sample_count=10000,               # Number of articles to process
)
gen.generate()

Configuration

Configuration is structured into three sections. See config.yaml for a complete example after initialization.

text_sampler

Defines how text strings are sampled for rendering. Each entry has a probability weight and a data source.

Type Description
sequential Streams text from a flat file. Ideal for natural language corpuses.
random Randomly samples from character files or nested sub-groups.
text_sampler:
  # Stream Chinese text from a corpus file
  - type: sequential
    prob: 0.20
    from_file: ./corpuses/zh.txt

  # Random character sampling with nested groups
  - type: random
    prob: 0.20
    sub_items:
      - prob: 0.4
        from_file: ./symbols_characters/characters.txt
        section: [~, 3500]    # First 3500 lines only
      - prob: 0.1
        from_string: " "      # Inline source

Key parameters:

  • prob: Probability weight (auto-normalized)
  • from_file / from_string: Data source
  • section: [start, end]: Slice of lines (~ = null = beginning/end)
  • sub_items: Nested probability groups (recursive)
  • traditional_prob: Probability of simplified → traditional Chinese conversion

image_processor

Controls visual appearance:

Parameter Default Description
bg_image_prob 0.3 Probability of using a real background image
gray_bg_prob 0.7 Probability of gray vs. colored background
effect_prob 0.2 Probability of text effects (italic/underline/strikethrough)
font_size 55 Base font size in pixels
scale_range [0.7, 1.1] Random scale factor range
margin_range [-5, 20] Horizontal margin range (pixels)
offset_prob 0.5 Probability of random position offset

generate

Controls output structure:

Parameter Default Description
min_targets / max_targets 5 / 50 Character count range per image
output_height 48 Output image height (width auto-calculated)
default_font_dir ./default_fonts Primary fonts directory
fallback_font_dir ./fallback_fonts Fallback fonts directory
out_dir ./generated Output image directory
out_jsonl ./generated.jsonl Annotation file path
hierarchical_structure [100, 625] Directory nesting levels

Font Setup

Primary Fonts (default_fonts/)

Place diverse .ttf / .otf font files here. A random font is selected for each image. More fonts = better model generalization. Aim for 50-200+ fonts covering your target scripts.

Fallback Fonts (fallback_fonts/)

When the primary font doesn't cover certain characters, the system falls back to these fonts. Place comprehensive Unicode fonts here (e.g., Noto Sans CJK, Noto Sans).

System Default

If no fallback fonts are provided, the system automatically tries:

  • Linux: /usr/share/fonts/truetype/DejaVuSans.ttf
  • macOS: /System/Library/Fonts/Courier New.ttf
  • Windows: C:\Windows\Fonts\Arial.ttf

If the system font is also unavailable, initialization fails.

Background Images

For realistic training data, add images to backgrounds/ and set bg_image_prob > 0.

Supported formats: .jpg, .jpeg, .png, .bmp, .webp

Output Format

Generated images are saved as PNG files in a hierarchical directory structure:

generated/
├── 00000001/
│   ├── 00000001/
│   │   ├── 00000001.png
│   │   ├── 00000002.png
│   │   └── ...
│   └── ...
└── ...

Annotations are saved in JSONL format (generated.jsonl):

{"image":"00000001/00000001/00000001.png","text":"示例文本","length":248}
{"image":"00000001/00000001/00000002.png","text":"Sample text","length":315}

Each line contains:

  • image: Relative path to the image file
  • text: The rendered text content
  • length: Image width in pixels

Development

This project uses vcpkg to manage native C++ dependencies, and uses scikit-build-core + nanobind for the Python/C++ bridge. Development is now based on configuring the environment with vcpkg and building from source.

Supported Platforms

  • Linux x86_64
  • Linux AArch64
  • macOS ARM64
  • Windows x86_64

Build from Source with vcpkg

Windows

git clone https://github.com/microsoft/vcpkg.git
.\vcpkg\bootstrap-vcpkg.bat
$env:CMAKE_TOOLCHAIN_FILE="$PWD\vcpkg\scripts\buildsystems\vcpkg.cmake"
pip install -e . --no-build-isolation

macOS

git clone https://github.com/microsoft/vcpkg.git
./vcpkg/bootstrap-vcpkg.sh
export CMAKE_TOOLCHAIN_FILE="$PWD/vcpkg/scripts/buildsystems/vcpkg.cmake"
pip install -e . --no-build-isolation

Linux

git clone https://github.com/microsoft/vcpkg.git
./vcpkg/bootstrap-vcpkg.sh
export CMAKE_TOOLCHAIN_FILE="$PWD/vcpkg/scripts/buildsystems/vcpkg.cmake"
pip install -e . --no-build-isolation

If you prefer to build the native extension directly with CMake, make sure CMAKE_TOOLCHAIN_FILE points to the vcpkg toolchain before configuring the project.

Donate

This project is maintained by a single person, so the documentation is not yet fully comprehensive and the feature set is still relatively limited.

If you would like to support the project, the most valuable help is:

  • submitting pull requests
  • actively opening issues when you encounter problems during usage

License

This project is licensed under the MIT License. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

neots-0.1.2.tar.gz (126.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

neots-0.1.2-cp313-cp313-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.13Windows x86-64

neots-0.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

neots-0.1.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

neots-0.1.2-cp313-cp313-macosx_11_0_arm64.whl (3.1 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

neots-0.1.2-cp312-cp312-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.12Windows x86-64

neots-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

neots-0.1.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

neots-0.1.2-cp312-cp312-macosx_11_0_arm64.whl (3.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

neots-0.1.2-cp311-cp311-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.11Windows x86-64

neots-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

neots-0.1.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

neots-0.1.2-cp311-cp311-macosx_11_0_arm64.whl (3.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

neots-0.1.2-cp310-cp310-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.10Windows x86-64

neots-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

neots-0.1.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

neots-0.1.2-cp310-cp310-macosx_11_0_arm64.whl (3.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file neots-0.1.2.tar.gz.

File metadata

  • Download URL: neots-0.1.2.tar.gz
  • Upload date:
  • Size: 126.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for neots-0.1.2.tar.gz
Algorithm Hash digest
SHA256 4b2abeb842264e5c7a7d1284062ed9bc71a6d07d706b1d4ec6406d1b566fe789
MD5 ccab7364a01776f04ec933e321ab7433
BLAKE2b-256 96b4df096b7bc1c16bcfd88499c4a5306fe9f804b70cc9f84edd175883636038

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2.tar.gz:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file neots-0.1.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: neots-0.1.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for neots-0.1.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 37fd0b8a0d3bb9b2627499e0632201319ffa7b6e508e95cfb8319d87cc341f63
MD5 7ba9360c5acab57c188523b580be12b6
BLAKE2b-256 6edf44dc0fb910f5313cf3d09d66713b9e22f353eb5942d378eb4632be30d032

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2-cp313-cp313-win_amd64.whl:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file neots-0.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for neots-0.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 55dc6d8caf54fa0c0cf884706c39fc00c88fd25f956cd2ccbc2d0b67838915bc
MD5 ab1f20e4148692e8b36cb1a0d5a9c6cd
BLAKE2b-256 c82c4821a56eb63cc8b0b85a9056d9bb2644587a593100113d97fb1af1ed4a7d

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file neots-0.1.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for neots-0.1.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1eaef201d723b6b3e57514d966acf03bb8546daf0c89a74fbd0d51a4d3276ac7
MD5 877d7da4e3fcac708356fd10c45ea644
BLAKE2b-256 e981a97450aa21d0160139196d060313ba25ab91ac13dd769f7a7ff013dcf01c

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file neots-0.1.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for neots-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b06411ebfe3237bed35c11761b879c2339ce96369dec35b56622a1f925aefd02
MD5 8931b57f7e202b0d2949d9a44e4358b9
BLAKE2b-256 ac8fa5c46c06fee27f67ba33372a610c98513c4595a9c109493b393a793f9e6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file neots-0.1.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: neots-0.1.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for neots-0.1.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a1b03faa68c1ea7e74cbc8633779975ae65252827b3335ce2f73e3734173a5a9
MD5 278a8da49c37b59b7537e244dab83541
BLAKE2b-256 9cbe6b771b788aa4e00a73e9b79f6abd8fd611429eda2737e0e19cad96cc294e

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2-cp312-cp312-win_amd64.whl:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file neots-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for neots-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e0fdc2422f02be8f1c30c697ed357c3727813fa18c44d51dd03f149a56b35ef8
MD5 92b9809056d3b9f43194e080a0ebe750
BLAKE2b-256 ee4699ace775536be5d12d1981bde3a218673f63ff46fb15f31b2fa9ab45fad6

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file neots-0.1.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for neots-0.1.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b7e35ae795e4f0d972b0b0c9434b41eb9077fc7c70dbc2c683cf4f61628ba5ed
MD5 8c39d2b48acd634c85dc2461ad1140bc
BLAKE2b-256 c46fd2de63e4a4af4e795442cd066f15c5d2d261158c0cc7ff5c5cb1c8161785

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file neots-0.1.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for neots-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2f507a5644e9fc7b8791570b95f2e4ce3d5b0fc3b3de0546b0b5483624cc6eac
MD5 76de50c2c5d5c4f54a468288f079f3ef
BLAKE2b-256 90a6af5b5d275aa4c17bb9438ba928d5e86ce5da8d25f325a2c11e777fb64b14

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file neots-0.1.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: neots-0.1.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for neots-0.1.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e2bd33e815217843cb3a609566e23605cba1a3ae09a6f11b906316bb09be8811
MD5 5bf4d1d40246f9e19b026f829a98067e
BLAKE2b-256 4033f8d1e48adbb791122be995283dcb2c43d5211be025c0252eb351ff75a80d

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2-cp311-cp311-win_amd64.whl:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file neots-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for neots-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b85de93eaedbf1cf44cf1544641b85459c547a795df4db7e2be8d555908106f0
MD5 781196cb4b1ef2658d4bb27b41d23264
BLAKE2b-256 3c6ffe249ec9e8b421d0997b1d288a550eaa5669400ece9a0efd3012cc9d10de

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file neots-0.1.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for neots-0.1.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 85b55c17ef2f6969d9d067b6c8a2897e96ecbd81e47b92941fadca2ddc2ad951
MD5 b0e130834d8ace341a9bad793834c761
BLAKE2b-256 e980e0064f289bd18f03a02422077584b9115ba9f8042f4d21ad3218a7fc1d8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file neots-0.1.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for neots-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e3645b151d659d5506ead2587a08f489e20bb5419f453dd62c9997856ed57b57
MD5 44ea8257eb64cdb278f557760b30e627
BLAKE2b-256 7c65024bd0c29801a23ad273186086b837c6315e36b277f99d12490ecf15ccce

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file neots-0.1.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: neots-0.1.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for neots-0.1.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c758e567014ed0573175c56a3d859252ba3eb4e210af460b1debb92fc2b456a5
MD5 82d64bebc649ad689be564eba105c6b0
BLAKE2b-256 e5bdedf516ea68bc9f45814772f49278f5d8b3494c6608f428e6fc39acb40cb6

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2-cp310-cp310-win_amd64.whl:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file neots-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for neots-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dd6644e6e3b29f42501131129fac670cd8b1042fcdc437bdacfe0cb5c1df9fbe
MD5 bdbd241f39ee44270377bfe9e263eb18
BLAKE2b-256 f39b5bf92bac6a9b2e3478b6909ed562c47afc09dd1f83d2753dd877a51df39a

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file neots-0.1.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for neots-0.1.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b129b870a57a0184ab062230a371d4847fa2d59e3b200466098dda4636be75de
MD5 1c54d50983b87f9e42fb54863e6ea28d
BLAKE2b-256 eee195623b4b3911a5fbd241be29f1268f34497ca22d0d774d09a9dc58727266

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file neots-0.1.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for neots-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3c903b60f812e8f5b734bcc1834607f57368b9ba277bd426f777a03559a6c91e
MD5 8a475934dbac5d1a7b5d3e97f0db71af
BLAKE2b-256 b1e5015b14a88938519f95646543aa38fe1467cc32977e7f81e60ba8bb81272e

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.2-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: workflow.yml on reactor-no8/NeoTextSynthesizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page