<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: nan nan</title>
    <description>The latest articles on DEV Community by nan nan (@nan_nan_d86f644d31091c00f).</description>
    <link>https://dev.to/nan_nan_d86f644d31091c00f</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4122967%2Ffd45d5ef-c121-4357-b191-7afc3bb5fd49.png</url>
      <title>DEV Community: nan nan</title>
      <link>https://dev.to/nan_nan_d86f644d31091c00f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nan_nan_d86f644d31091c00f"/>
    <language>en</language>
    <item>
      <title>What I learned building a fully offline multi-region OCR tool with PP-OCRv6 and ONNX Runtime</title>
      <dc:creator>nan nan</dc:creator>
      <pubDate>Wed, 21 Oct 2026 09:38:54 +0000</pubDate>
      <link>https://dev.to/nan_nan_d86f644d31091c00f/what-i-learned-building-a-fully-offline-multi-region-ocr-tool-with-pp-ocrv6-and-onnx-runtime-5gdp</link>
      <guid>https://dev.to/nan_nan_d86f644d31091c00f/what-i-learned-building-a-fully-offline-multi-region-ocr-tool-with-pp-ocrv6-and-onnx-runtime-5gdp</guid>
      <description>&lt;p&gt;The problem I kept running into&lt;br&gt;
PowerToys Text Extractor (Win+Shift+T) is genuinely good at what it does: grab a block of on-screen text, put it in the clipboard, move on. But it returns a plain text stream, one region at a time. When I needed to pull text from five different parts of a UI and preserve which text came from where, I ended up doing the structuring by hand.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvz5z2xsewmo2dfsbb0z7.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvz5z2xsewmo2dfsbb0z7.PNG" alt=" " width="800" height="481"&gt;&lt;/a&gt;&lt;br&gt;
That's the gap I wanted to close: not “can it extract text,” but “what does the output look like when you capture multiple regions and need structured data.”&lt;/p&gt;

&lt;p&gt;Why PP-OCRv6, and why offline matters here&lt;br&gt;
I chose PP-OCRv6 because it's a small, Apache-2.0 licensed model family that runs comfortably on CPU via ONNX Runtime. The tiny tier is about 6.6 MB — small enough to bundle inside the MSIX package, which means OCR works on first launch without a download. The accurate tier is about 29.8 MB and downloads once.&lt;/p&gt;

&lt;p&gt;The offline constraint wasn't about privacy marketing. It was a latency decision. Every round trip to a cloud OCR API adds network variance to an interaction that should feel instantaneous. Running locally means the bottleneck is model inference, not bandwidth.&lt;/p&gt;

&lt;p&gt;What the multi-region workflow actually looks like&lt;br&gt;
After capturing a region, the overlay stays open. You hold Ctrl and drag another region, and it gets auto-numbered. Each region lands in a side drawer with a thumbnail and recognition status. From the drawer you can reorder, delete, undo, and batch-export.&lt;/p&gt;

&lt;p&gt;The export contract was the most opinionated part. A Markdown table row carries: index, x, y, w, h, confidence, text. CSV has the same columns plus line_index, mode, elapsed_ms, model_hash. The goal is that the output is immediately usable in an issue tracker, a documentation page, or a spreadsheet — not something you have to reformat first.&lt;/p&gt;

&lt;p&gt;The awkward parts&lt;br&gt;
Two things I haven't fully solved:&lt;/p&gt;

&lt;p&gt;Tiny tier excludes Japanese. PP-OCRv6 tiny covers 49 languages but not Japanese. I detect Japanese characters and prompt the user to switch to the accurate tier, but it's a visible seam in the experience.&lt;/p&gt;

&lt;p&gt;Scrolling capture is still on the roadmap. It's the most requested missing feature in my own testing, but the success rate varies too much across apps for me to ship it as a headline feature yet.&lt;/p&gt;

&lt;p&gt;What I'd like feedback on&lt;br&gt;
The drawer interaction is the part I'm least confident about. Does a persistent side drawer feel right for a capture overlay, or would an inline list closer to the captured regions be more natural? I'm also curious whether the Markdown table schema is missing anything you'd need for a real documentation workflow.&lt;/p&gt;

&lt;p&gt;The tool is on the Microsoft Store ($2.99 one-time). Source repo and product page are linked below.&lt;/p&gt;

&lt;p&gt;Store: &lt;a href="https://apps.microsoft.com/detail/9pbp8vbg4rj1" rel="noopener noreferrer"&gt;https://apps.microsoft.com/detail/9pbp8vbg4rj1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Site: &lt;a href="https://lijiannan1241.github.io/CaptureOCR/" rel="noopener noreferrer"&gt;https://lijiannan1241.github.io/CaptureOCR/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>softwaredevelopment</category>
      <category>tools</category>
    </item>
    <item>
      <title>I built a Windows TTS ebook reader for long novels — feedback wanted [Dev]</title>
      <dc:creator>nan nan</dc:creator>
      <pubDate>Wed, 21 Oct 2026 09:04:20 +0000</pubDate>
      <link>https://dev.to/nan_nan_d86f644d31091c00f/i-built-a-windows-tts-ebook-reader-for-long-novels-feedback-wanted-dev-1eof</link>
      <guid>https://dev.to/nan_nan_d86f644d31091c00f/i-built-a-windows-tts-ebook-reader-for-long-novels-feedback-wanted-dev-1eof</guid>
      <description>&lt;p&gt;I’m the developer. I built this because listening to long novels on Windows was painful: robotic system voices, copy-paste TTS sites, character limits, no chapters, and losing my place.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F33e6f480437a8c3si1ez.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F33e6f480437a8c3si1ez.PNG" alt=" " width="799" height="483"&gt;&lt;/a&gt;&lt;br&gt;
Ebook Voice Player opens TXT, DOCX, PDF, and EPUB; detects chapters automatically; lets you click any paragraph to start there; highlights the current paragraph as it reads; and exports the whole book to numbered MP3 files.&lt;/p&gt;

&lt;p&gt;It has 229 voices across 56 languages and regional accents, plus bookmarks, notes, full-text search, a sleep timer, and term replacement for names and places. One-time purchase with a free trial, no subscription and no ads.&lt;/p&gt;

&lt;p&gt;What it does &lt;strong&gt;not&lt;/strong&gt; do, so you know before trying:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New synthesis requires an internet connection and uses Microsoft Edge TTS; cached and exported audio can play offline&lt;/li&gt;
&lt;li&gt;Scanned PDFs need OCR first&lt;/li&gt;
&lt;li&gt;DRM-protected ebooks are not supported&lt;/li&gt;
&lt;li&gt;Windows desktop only&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’d especially appreciate feedback on chapter detection for messy TXT files and long-book performance. If this post isn’t allowed here, tell me and I’ll remove it.&lt;/p&gt;

&lt;p&gt;Link: &lt;a href="https://apps.microsoft.com/store/detail/9NLHLN1SJNBR?cid=Reddit" rel="noopener noreferrer"&gt;Ebook Voice Player&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>software</category>
      <category>tools</category>
    </item>
    <item>
      <title>Ebook Voice Player - Text To Speech Ebook Reader</title>
      <dc:creator>nan nan</dc:creator>
      <pubDate>Sat, 17 Oct 2026 14:50:56 +0000</pubDate>
      <link>https://dev.to/nan_nan_d86f644d31091c00f/ebook-voice-player-text-to-speech-ebook-reader-jn9</link>
      <guid>https://dev.to/nan_nan_d86f644d31091c00f/ebook-voice-player-text-to-speech-ebook-reader-jn9</guid>
      <description>&lt;p&gt;Ebook Voice Player (TTS e-book reader) is a Windows desktop reading and listening app that opens multiple e-book formats and provides 229 high-quality voices across 56 languages and 75 countries and regions, with chapter- and paragraph-level playback control.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3dnbk6l3usdnbeun0vr3.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3dnbk6l3usdnbeun0vr3.PNG" alt=" " width="799" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Ebook Voice Player</title>
      <dc:creator>nan nan</dc:creator>
      <pubDate>Wed, 16 Sep 2026 14:13:47 +0000</pubDate>
      <link>https://dev.to/nan_nan_d86f644d31091c00f/ebook-voice-player-491f</link>
      <guid>https://dev.to/nan_nan_d86f644d31091c00f/ebook-voice-player-491f</guid>
      <description>&lt;p&gt;Product Name&lt;br&gt;
Ebook Reader with Text-to-Speech&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa5fhall087fekbqw236b.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa5fhall087fekbqw236b.JPG" alt=" " width="65" height="34"&gt;&lt;/a&gt;&lt;br&gt;
Tagline&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://nannan2008.itch.io/e-book-voice-player" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;nannan2008.itch.io&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
Open multiple e-book formats, choose voices from multiple countries/regions, and listen anywhere.&lt;br&gt;
Detailed Description

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdjfcmhaw6xohm763r552.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdjfcmhaw6xohm763r552.PNG" alt=" " width="800" height="398"&gt;&lt;/a&gt;&lt;br&gt;
This is a Windows e-book reader with built-in text-to-speech (TTS). It opens common e-book formats such as EPUB, PDF, MOBI, AZW3, TXT, HTML, RTF, DOCX, and FB2, so you can manage and read books from different sources in one app.&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://nannan2008.itch.io/e-book-voice-player" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;nannan2008.itch.io&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Its core feature is listening: you can choose voices from different countries and regions, including English (US/UK/Australian), Chinese (Mandarin/Cantonese), Japanese, Korean, French, German, Spanish, Portuguese, Italian, Russian, Arabic, Hindi, and more. You can adjust speed, pitch, and volume. Playback supports pause, resume, fast forward/rewind, chapter navigation, sleep timer, and background play, making it ideal for commuting, exercising, doing chores, or resting.&lt;/p&gt;

&lt;p&gt;The reading interface includes library management, bookmarks, notes, reading progress, font and theme adjustments. For language learners, it helps train listening and pronunciation by reading and listening at the same time. For visually impaired users or people with reading fatigue, it turns text into audio. The software can work offline, uses system TTS or local engines, and respects privacy by not uploading your books. It runs on Windows 10/11, is lightweight to install, and is suitable for indie distribution.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Available voices depend on the voices installed in your operating system or TTS engine. 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Core Features&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Supports multiple e-book formats: EPUB, PDF, MOBI, AZW3, TXT, HTML, RTF, DOCX, FB2, etc.
Text-to-speech playback: play, pause, resume, fast forward/rewind, chapter jump
Multi-language voice selection: English, Chinese, Japanese, Korean, French, German, Spanish, Portuguese, Italian, Russian, Arabic, Hindi, and more
Voice parameter controls: speed, pitch, volume
Listening aids: sleep timer, background play, highlight-follow
Library management: import, categorize, covers, search
Reading aids: bookmarks, notes, progress saving, font/theme adjustment
Privacy-friendly: local processing, no book uploads
Windows 10/11, lightweight installation 
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://nannan2008.itch.io/e-book-voice-player" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;nannan2008.itch.io&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Target Users&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Language learners
Commuters
Students and researchers
Visually impaired users or people with reading fatigue
Multilingual readers
Audiobook and listening fans 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Use Cases&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Listen to e-books on the commute
Read and listen while learning a foreign language
Continue “reading” while doing chores or exercising
Read PDF papers or documents
Play storybooks for children 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://nannan2008.itch.io/e-book-voice-player" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;nannan2008.itch.io&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>voice</category>
      <category>tts</category>
      <category>books</category>
    </item>
  </channel>
</rss>
