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.1.tar.gz (126.0 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.1-cp313-cp313-win_amd64.whl (261.5 kB view details)

Uploaded CPython 3.13Windows x86-64

neots-0.1.1-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.1-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.1-cp313-cp313-macosx_11_0_arm64.whl (3.1 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

neots-0.1.1-cp312-cp312-win_amd64.whl (261.6 kB view details)

Uploaded CPython 3.12Windows x86-64

neots-0.1.1-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.1-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.1-cp312-cp312-macosx_11_0_arm64.whl (3.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

neots-0.1.1-cp311-cp311-win_amd64.whl (262.3 kB view details)

Uploaded CPython 3.11Windows x86-64

neots-0.1.1-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.1-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.1-cp311-cp311-macosx_11_0_arm64.whl (3.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

neots-0.1.1-cp310-cp310-win_amd64.whl (262.5 kB view details)

Uploaded CPython 3.10Windows x86-64

neots-0.1.1-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.1-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.1-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.1.tar.gz.

File metadata

  • Download URL: neots-0.1.1.tar.gz
  • Upload date:
  • Size: 126.0 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.1.tar.gz
Algorithm Hash digest
SHA256 c59a6a12ea2e75d93643a9495462a6aab5ce9564e75d5d917be73d7604f57f8f
MD5 00ce6f1f37c6a56d851920ee81a35023
BLAKE2b-256 35dca794b1f7a0b55e9c12e0cee10fe20f291849278b91d9dc41099c7bec4dd5

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1.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.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: neots-0.1.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 261.5 kB
  • 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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 86a4407937f8c7b73bb2ce92c9310e73eba201e22c40e49ee11d5d0fba90de1a
MD5 95e1831198f92fc3f01640af297d5a62
BLAKE2b-256 a9ea0449de2c72b5cd8df0a06643f0fcfeecc714dff0016aafa452d20b639cf1

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1-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.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for neots-0.1.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0229608a409b08e87baf8d422ef7edb0931c060eaf78ad4cf056eab8daba8e5d
MD5 a282983cc76af153918b751bee5d95ca
BLAKE2b-256 69d8a43b313e8974642f15748d992d40953f8e0df0588af9ad423a8c6e6a5448

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1-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.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for neots-0.1.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ba1ff94dcd153b704f395ad5116893fd68ba95dbf8422752c0bcd49d790088d5
MD5 6507e2daadf172e41237acb82f4afba2
BLAKE2b-256 beea1130d2eb21b5fd416423de266deac8e8a27b8f190596be772921d5e41e04

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1-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.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for neots-0.1.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 682d6d068e4bc1f7ce72fc95f89c57f89a0a6a5183f3191b633e1f088c6dc3fa
MD5 afb385f2d0f8f9a302269e3f959864fa
BLAKE2b-256 0ef17c9a981a4b443929499a885d7276d0de135e8feeb4a5ce436f04cc37a8cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1-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.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: neots-0.1.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 261.6 kB
  • 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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 800d32a86d8e3773538e15f9fb174a3a191cc7f6c912879424478a66a2a5046b
MD5 470820cdd049924220fc693699f67fdb
BLAKE2b-256 92e0c4db67a87392215329c1276cc22b5c510337a32d4415b22c33089c2a7976

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1-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.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for neots-0.1.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c7c9ee7043d458cdd5ef3aa5f14b0065014d09332bf7d1d5aeb199e136892bf0
MD5 b5a008330eb50076b3a127ac9a364de6
BLAKE2b-256 ff55c6eb165047cbaed835481b15119769a207d8c8e20af6acc5f6ec365bd0cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1-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.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for neots-0.1.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2c477d04da23390b4198f4ab234e55fa0262a48d131386eb610ba02c9e3b9405
MD5 a7b8c7fcc0e251d0f8e439fe6a0ce10d
BLAKE2b-256 f208a62ad633dbcc02ba41442237f5d13c3ff0914ea8ee2639bb7959283ceabc

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1-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.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for neots-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3fdb58fd8f6cde7aaef21f26f524c9fb401c89ca281488d11e8a7479731e647d
MD5 4123de0aa6797f766f930659947a0bde
BLAKE2b-256 c30fa6479703b38d5f1cfc339c63931621d9ad42e92241dd00708861c1ea697d

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1-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.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: neots-0.1.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 262.3 kB
  • 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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a50ea406921b397015137c19b7fbe0ad085a39bf66f9aa8191fbb6e726f77ee4
MD5 f3600764dc8c8af37efdc240d8533c8a
BLAKE2b-256 274f8a6f9cd458cea439c51caddb27127434e18e0a228d7564a5d48942ac20e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1-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.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for neots-0.1.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 079dce0cd1279a23a014d704be0284c43d0092e97f72279f3f17fea04257b20e
MD5 079556793d312a58791a4aff999f5d39
BLAKE2b-256 42028bbc56f1417cafdb5fe19c54eec39f0099504ccdf9d4d8f24f0de5cb247a

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1-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.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for neots-0.1.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cf225511944ffb5015d8f671583c65b21174972e9323eb0d658436e173c1cb85
MD5 f4c1e86254d5a9b894a793836f84daae
BLAKE2b-256 1590b44b91fb48e3aacc4e6f9451099560bcd1896208cf9324b5f11a88bde00e

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1-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.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for neots-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 40a4089569a4e41072c09b1b6274dd7dd074af92c0397f59f92c9eb28069add1
MD5 128737eb5f88187eadbea4d2676fb4bf
BLAKE2b-256 0f2fa0f5ffeaf48ad37901d384baf9e999cc654b87ed44dc6efe92bb7491faf1

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1-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.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: neots-0.1.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 262.5 kB
  • 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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e6951edd5ffb321638ab59e7bb2e50826c093b7130715cab68708724ac1ea93d
MD5 55065b21880f8149ed227a1254a06467
BLAKE2b-256 afc1f2b8ac423e89337b391a3308bb3c99e3f9f39559fad7055948644504a622

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1-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.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for neots-0.1.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 06ecf4598fad85c9ed5a2e9bcc1cf21657731fd359d9c62f9254466be05c9266
MD5 73682abfd5001e0e3a1c5421bbe2cdcb
BLAKE2b-256 f02d345de7f13908e52729ade552f23e2d659e7a50110cfde4920550a2cbb9fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1-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.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for neots-0.1.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 782473506d127bf3acb7327e1ea43a16a4ad18472ca56ba6f3bebf099d2d8e57
MD5 610a82126d8d00fe71e90af3175f9b93
BLAKE2b-256 1432c6459eacfcc508e84f782167ff94b880bfbf14cc2360b0f61de1a4408eee

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1-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.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for neots-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8d621829e4a3601fc36802e787ae21983c063b7ca93a23c2ec3dd9c60a1ac54b
MD5 81ad667ab61d20df642442938715aa1a
BLAKE2b-256 a07dc2f22c94367343cb8e6ad60c1bdf874fe43ee9aea56e5f28172f0820a959

See more details on using hashes here.

Provenance

The following attestation bundles were made for neots-0.1.1-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