BookTranslator
BookTranslator

OCR متن عمودی ژاپنی: حفظ ترتیب ستون‌ها و مدیریت فواریگانا

استخراج متن عمودی ژاپنی با تنظیمات مناسب طرح‌بندی، جداسازی فواریگانا از متن اصلی و بررسی خروجی‌های واقعی OCR در برابر نمونه‌های قابل دانلود.

BookTranslator

BookTranslator Team

14 min read

برای OCR متن عمودی ژاپنی، پیش از تغییر فیلترهای تصویر، جهت نوشتن را بررسی کنید. از یک مدل ژاپنی و تنظیم بخش‌بندی مناسب برای مدیریت متن عمودی استفاده کنید، ستون‌ها را در ترتیب موردنظرشان تأیید کنید و تصمیم بگیرید که آیا به متن اصلی به‌تنهایی نیاز دارید یا فواریگانا را نیز می‌خواهید. یک صفحه پر از کاراکترهای قابل‌تشخیص همچنان می‌تواند یک رونوشت غیرقابل‌استفاده باشد اگر توالی آن‌ها اشتباه باشد.

ما یک آزمایش محلی کوچک و قابل‌تکثیر انجام دادیم تا آن تصمیمات را ملموس کنیم. پیکربندی افقی سه ستون عمودی ما را به‌هم‌ریخت. پیکربندی عمودی متن اصلی بدنه را بازیابی کرد، اما افزودن فواریگانا دو علامت نگارشی را تغییر داد و برش دادن یاقوت (ruby) خطاهای نگارشی را از بین نبرد.

این‌ها نتایج یک نمونه مصنوعی عمدتاً کوچک هستند، نه ادعای دقت در مورد تمام کتاب‌های ژاپنی. درس مفید محدودتر است: تشخیص کاراکتر، ترتیب خواندن و مدیریت حاشیه‌نویسی را به‌طور جداگانه ارزیابی کنید. نتیجه را صرفاً به این دلیل که شبیه ژاپنی به نظر می‌رسد، برای ترجمه ارسال نکنید.

ابتدا متنی را که واقعاً می‌خواهید شناسایی کنید

در ترکیب عمودی سنتی ژاپنی، کاراکترها در یک خط به سمت پایین پیش می‌روند و خطوط از راست به چپ پیشروی می‌کنند. یاقوت (Ruby) متن کوچک‌تری است که با کاراکترهای پایه مرتبط است؛ فواریگانا معمولاً تلفظ آن‌ها را فراهم می‌کند. الزامات طرح‌بندی متن ژاپنی W3C این جهات نوشتن و روابط یاقوت را توصیف می‌کند.

پیش از OCR، نواحی معنادار صفحه را برچسب‌گذاری کنید:

  • ستون‌های عمودی اصلی؛
  • یاقوت کوچک در کنار متن اصلی؛
  • سرتیترهای افقی، زیرنویس‌ها یا جدول‌ها؛
  • شماره صفحات و سرسرفصل‌ها؛
  • یادداشت‌های حاشیه‌ای یا صفحات مجاور نامرتبط.

هر نوار عمودی را به عنوان یک پاراگراف مستقل در نظر نگیرید. یک نوار از کانا کوچک در کنار 図書館 ممکن است خوانش آن باشد، としょかん، نه جمله بعدی.

سیاست خروجی را پیش از قضاوت درباره OCR انتخاب کنید:

وظیفه خوانندهنتیجه مطلوبچه چیزی به عنوان یک مشکل محسوب می‌شود
جستجو یا ترجمه بدنهمتن اصلی به ترتیب؛ خوانش‌های مفید به‌طور جداگانه ذخیره شده‌اندروبی درج شده در نثر، متن بدنه حذف‌شده، ستون‌های جابجاشده
مطالعه تلفظمتن اصلی به‌علاوه خوانش‌های به‌درستی مرتبط‌شدهروبی گم‌شده یا خوانش متصل به کلمه اشتباه
تولید یک استنساخ دقیقمتن اصلی، روابط حاشیه‌نویسی و تصمیمات ویراستاری حفظ شده‌اندحذف یا عادی‌سازی خاموش مطالبی که قصد داشتید حفظ کنید

یک خروجی مشابه ممکن است در یک وظیفه قبول شود و در وظیفه‌ای دیگر شکست بخورد. آزمایش ما از استنساخ صرفاً متنی به عنوان هدف مقایسه خود استفاده می‌کند. این ابزار از دست دادن فوریگا را برای یک نسخه مناسب مطالعه تلفظ قابل قبول نمی‌داند.

یک آزمایش واقعی OCR سه‌جمله‌ای

این نمونه از این جملات تألیف‌شده توسط خود استفاده می‌کند:

朝の図書館で本を読む。
古い地図には川が見える。
明日は友人と駅で会う。

آن‌ها به خواندن در کتابخانه، دیدن رودخانه‌ای روی یک نقشه قدیمی، و ملاقات با یک دوست در ایستگاه اشاره می‌کنند. هنگامی که شکست خطوط حذف شوند، ۳۴ نقطه کد یونی‌کد متن بدنه، از جمله سه نقطه پایان ژاپنی وجود دارد.

ما همین بدنه را در سه شکل ارائه کردیم:

  1. متن افقی.
  2. سه ستون عمودی، خوانده‌شده از راست به چپ.
  3. همان ستون‌های عمودی با فوریگا در کنار 図書館, 地図, 友人، و 駅.

نمونه مصنوعی OCR ژاپنی با سه ستون عمودی خوانده‌شده از راست به چپ و فوریگای کوچک‌تر در سمت راست کلمات انتخاب‌شده.

این‌ها تصاویر آموزشی تمیزی هستند، نه صفحات اسکن‌شده از یک کتاب. رندرکننده از Noto Sans CJK JP، کاراکترهای بدنه ۶۴ پیکسلی، روبی ۲۴ پیکسلی، و چیدمان عمودی ساده‌شده‌ی کاراکتر به کاراکتر استفاده می‌کند. این ابزار نقاط پایان عمودی را به عنوان دایره‌های توخالی کوچک در موقعیت‌های انتخاب‌شده دستی ترسیم می‌کند تا استفاده از موقعیت‌یابی گلیف عمودی مناسب فونت؛ بنابراین نتایج نشانه‌گذاری مشخص نمی‌کنند که OCR روی یک کتاب با حروف‌چینی مناسب چگونه عمل می‌کند. این ابزار هر قانون حروف‌چینی ژاپنی را بازتولید نمی‌کند. هیچ تارشدگی، انحراف، بافت کاغذ، دست‌خط، تایپ تاریخی، یا صفحه با جهت مختلط در آزمون وجود ندارد.

موتور، مدل‌ها و تنظیمات

این آزمایش در تاریخ ۷ سپتامبر ۲۰۲۶ با استفاده از Tesseract.js 7.0.0 و Tesseract.js-core 7.0.0 به‌صورت محلی روی سیستم‌عامل macOS ARM64 اجرا شد. تمام فراخوانی‌های موفق از نسخه رسمی tessdata_fast مدل‌ها در کامیت 87416418657359cb625c412a48b6e1d6d41c29bd، با OEM 1، یعنی حالت موتور مبتنی بر LSTM، استفاده کردند.

مخزن رسمی مدل‌های Tesseract فایل‌های جداگانه‌ای را برای jpn و jpn_vert فراهم می‌کند. مستندات آن، PSM 5 را به عنوان یک بلوک یکنواخت با چینش عمودی و PSM 6 را به عنوان یک بلوک متنی یکنواخت توصیف می‌کند؛ فرض قطعه‌بندی متناسب با ناحیه در حال تشخیص را انتخاب کنید. مستندات صفحه قطعه‌بندی.

موارد ثبت‌شده ما از jpn با PSM 6 برای متن افقی، jpn_vert با PSM 5 برای متن عمودی، و یک کنترل عمودی ناهمخوان عمدی با jpn/PSM 6 استفاده کردند. هم مدل و هم قطعه‌بندی بین این دو پیکربندی عمودی تغییر می‌کنند، بنابراین این یک مقایسه گردش کار است، نه آزمایشی که اثر هر تنظیم را به‌تنهایی ایزوله کند.

تلاش اولیه با tessdata_best پیش از تولید متن OCR در هسته WebAssembly موجود متوقف شد. ما برای سازگاری به مدل‌های عدد صحیح رسمی tessdata_fast سوئیچ کردیم و آن خطا را ثبت نمودیم. هیچ نتیجه‌گیری درباره دقت یک خانواده از مدل‌ها از آن جابه‌جایی حاصل نمی‌شود.

آنچه در واقع بازگشت داده شد

این مقایسه فاصله سفید را حذف کرده و نرمال‌سازی Unicode NFC را اعمال می‌کند. این کار نمی‌کند علائم نگارشی را جایگزین کند، کانجی را اصلاح کند یا متن را مجدداً مرتب نماید. کاملترین خروجی‌های خام و هش‌های نسخه/مدل, CSV مقایسه بدنه، و توضیحات خطا قابل دانلود هستند.

ورودی و پیکربندینتیجه مشاهده‌شده در مقایسه با هدف مختص بدنه
افقی، jpn، PSM 6تمام ۳۴ نقطه کد پس از حذف فاصله‌ها مطابقت داشتند
عمودی، jpn، کنترل PSM 6خروجی در ستون‌ها پخش شد و شامل جایگزینی کاراکترها بود؛ متن قابل استفاده نیست
عمودی، jpn_vert، PSM 5تمام ۳۴ نقطه کد پس از حذف فاصله‌ها مطابقت داشتند؛ ترتیب ستون‌ها درست بود
عمودی با فوریگانا، jpn_vert، PSM 5متن اصلی به ترتیب باقی ماند، اما دو 。 علامت به ASCII تبدیل شدند .؛ روبی به عنوان تلفظ‌های جداگانه بازگردانده نشد
سه برش ستون بدنه از تصویر فوریگانا، jpn_vert، PSM 5ستون اول با .، ستون دوم با ,، و ستون سوم با 。 به پایان رسید؛ برش دادن تمام نواقص علامت‌گذاری را برطرف نکرد

برای مثال، مورد فوریگانا این خط اول را برگرداند:

Expected: 朝の図書館で本を読む。
Observed: 朝 の 図書 館 で 本 を 読む .

فاصله‌ها توسط قانون مقایسه اعلام‌شده‌ی ما نادیده گرفته می‌شوند. علائم نگارشی نهایی این‌طور نیستند. یک جریان کاری فقط مبتنی بر جستجو ممکن است این تفاوت را تحمل کند، اما یک استنساخ وفادارانه باید آن را ثبت و اصلاح کند.

کنترل عمودی نامنظم با 明 古 昌 آغاز شد که به جای دنبال کردن اولین جمله‌ی موردنظر، در میان کاراکترهای بالایی ستون‌ها جابه‌جا می‌شد. خروجی آن نشان می‌دهد که چرا تشخیص نمادهای فردی با بازسازی توالی خواندن یکسان نیست.

هفت فراخوانی OCR تکمیل‌شده وجود داشت: چهار مورد تصویر کامل و سه مورد برش‌خورده. ما تمام خروجی‌ها را حفظ کردیم. یک ایجنت نتایج را با حقیقت زمینی تألیف‌شده مقایسه کرد و تصاویر را به صورت بصری بررسی نمود؛ هیچ بررسی انسانی کور یا پیکره‌ی محک گسترده‌ای وجود نداشت. این آزمایش بهترین موتور جهانی، نرخ دقت در سطح کتاب، یا عملکرد را روی اسکن شما تعیین نمی‌کند.

از یک جریان کاری مبتنی بر منطقه اول در صفحه‌ی خود استفاده کنید

۱. منبع را حفظ کرده و یک صفحه‌ی دشوار را انتخاب کنید

تصویر اصلی یا PDF را دست‌نخورده نگه دارید. روی یک نسخه کار کنید و شماره صفحه را یادداشت کنید. صفحه‌ای را انتخاب کنید که حاوی مشکلی باشد که سعی در حل آن دارید: روبی متراکم، حاشیه‌ی باریک، سرتیتر افقی بالای متن عمودی، یا فونت به‌طور غیرعادی کوچک.

یک صفحه‌ی عنوان تمیز آزمون پذیرش مفیدی برای کتابی که صفحات بدنه‌ی آن طرح‌بندی متفاوتی دارند، نیست. اگر منبع یک فایل PDF است، قبل از اجرای جریان کاری OCR فقط-تصویر، صفحه‌ی انتخاب‌شده را با استفاده از ابزاری که به آن اعتماد دارید استخراج یا رندر کنید. اسکریپت‌های این مقاله فایل‌های PNG را می‌پذیرند؛ آن‌ها فایل‌های PDF را پردازش نمی‌کنند یا لایه‌های PDF قابل جستجو نمی‌سازند.

برای فرآیند کامل آماده‌سازی و ترجمه سند اسکن‌شده، از ابزار گسترده‌ترِ جریان کاری PDF اسکن‌شده استفاده کنید. این راهنما بر روی جهت‌یابی، بخش‌بندی، روبی و تصمیمات استنساخ ژاپنی تمرکز دارد.

۲. نواقص ثبت را بدون نابود کردن متن کوچک اصلاح کنید

کاراکترهای واقعی را در سطح بزرگ‌نمایی مفیدی بررسی کنید. کجی ناخواسته را صاف کنید، حاشیه‌های نامربوط صفحه را حذف کنید، و کنتراست کافی را برای تمایز دادن کاناها و علائم نگارشی کوچک حفظ کنید. از تلقی آستانه‌گذاری تهاجمی یا تیزسازی به عنوان یک بهبود خودکار خودداری کنید: قبل از اعتماد به OCR، تصویر حاصل را با تصویر اصلی مقایسه کنید.

راهنمایی کیفیت تصویرِ تسراکت وضوح، نویز، کجی و حاشیه‌ها را پوشش می‌دهد. این موارد از جهت نوشتن جدا هستند. تصحیح کجی صفحه‌ای که در زاویه عکس‌برداری شده است، همان عملیات چرخش متن عمودی ژاپنی ایستاده به پهلو نیست.

فایل‌های نمونه دارای متادیتای ۳۰۰ dpi هستند، اما این عدد جزئیات از دست رفته را ایجاد نمی‌کند. اندازه‌ی واقعی گلایف بدنه آن‌ها ۶۴ پیکسل است. یک عکس با وضوح پایین که با برچسب «۳۰۰ dpi» مشخص شده است، همچنان همان عکس با وضوح پایین است.

۳. زمانی که صفحه یکی از فرض‌های طرح‌بندی را نقض می‌کند، مناطق را جدا کنید

قبل از اینکه از یک فراخوانی OCR بخواهید یک عنوان افقی، نثر عمودی، تصویر و شماره صفحه را مدیریت کند، بلوک عمودی اصلی را به تنهایی امتحان کنید. یک ثبت ساده منطقه مانند «صفحه ۱۲، بدنه، ستون ۱ از سمت راست» را نگه دارید. این ثبت باعث می‌شود مونتاژ بعدی قابل بازرسی باشد.

برای مطالب با جهت ترکیبی، منطقه افقی را با تنظیم افقی مناسب و منطقه عمودی را با تنظیم عمودی تشخیص دهید، سپس آن‌ها را به ترتیبی که سند در نظر دارد مونتاژ کنید. این یک جریان کاری پیشنهادی برای آزمایش روی فایل شما است، نه یک قابلیت طرح‌بندی ترکیبی که توسط سه تصویر نمونه‌ی ما اندازه‌گیری شود.

آزمایش برش ما از مختصات دقیق شناخته‌شده‌ای برای حذف نوار روبی در کنار هر ستون مصنوعی استفاده کرد، در حالی که متن بدنه و حاشیه‌ی سفید آن را حفظ کرد. این یک نمایش دستی انتخاب منطقه بود، نه یک الگوریتم خودکار حذف فوریگانا. مختصات آن را روی صفحه‌ی یک کتاب واقعی اعمال نکنید.

۴. قبل از ویرایش و بازبینی کاراکترهای فردی، ستون‌ها را بررسی کنید

کاراکترهای بدنه‌ی اول و آخر هر ستون را با کار در جهت مورد نظر مقایسه کنید. تأیید کنید که هیچ ستونی گم، تکرار، معکوس یا با همسایه‌ی خود ادغام نشده است. سپس جملات را در مرزهای ستون بررسی کنید.

تنها پس از آن باید کانجی، کانا، علائم نگارشی، اعداد و اسامی فردی را اصلاح کنید. در غیر این صورت، ممکن است وقت خود را صرف صیقل دادن قطعاتی کنید که در پاراگراف اشتباهی مونتاژ شده‌اند.

یک بازبینی سه مرحله‌ای مفید عبارت است از:

  1. ناحیه‌ها و ترتیب: همه ناحیه‌های متنی مورد نظر یک‌بار و به ترتیب حضور دارند.
  2. کاراکترها: تصویر واقعی را با متن مقایسه کنید، از جمله علائم نگارشی کوچک و نشانه‌های کانا.
  3. یادداشت‌ها: تصمیم بگیرید که آیا هر آیتم روبی، یادداشت یا برچسب حاشیه‌ای حفظ، جدا یا به طور عمدی حذف شود.

مقدار اطمینان یک موتور جایگزینی برای این بررسی‌ها نیست. کنترل به هم ریخته ما همچنان یک عدد اطمینان گزارش‌شده توسط موتور را برگرداند؛ این امر ترتیب خواندن آن را قابل قبول نکرد.

تا زمانی که دلیل آن را نمی‌دانید، فوریگانا را حذف نکنید

برای استخراج صرفاً متنی، روبی نباید به طور تصادفی به لایه دوم نثر تبدیل شود. اما حذف کردن هر رشته کانا کوچکی یک قانون کلی ایمن نیست. یک تلفظ می‌تواند به رفع ابهام یک نام کمک کند، تلفظ انتخاب‌شده توسط نویسنده را حفظ کند، یا از وظیفه مطالعه خواننده پشتیبانی نماید.

در تصویر فوریگانای ما، خروجی OCR شامل کانجی اصلی بود اما چهار تلفظ را به عنوان یک مجموعه یادداشت جداگانه برنگرداند. این ممکن است پس از اصلاح علائم نگارشی برای یک وظیفه جستجوی صرفاً متنی کافی باشد. اگر خروجی نهایی اطلاعات تلفظ را وعده دهد، این کافی نیست.

تلفظ‌های مهم را به صورت جداگانه ذخیره کرده و آن‌ها را با وقوع صحیح مرتبط کنید. برای مثال:

Page: sample 1
Column: 1 from the right
Base text: 図書館
Reading shown: としょかん
Decision: retain body text; save reading in the annotation record

نمونه رونویسی روبی جداگانه آن سیاست را صریح می‌کند. این یک حقیقت مبنا است که همراه با تصویر ایجاد شده است، نه ادعای موفقیت OCR.

اگر OCR کانا را با یک کلمه مخلوط کند یا ارتباط آن را از دست بدهد، آن را با تصویر مقایسه کرده و رونویسی را اصلاح کنید. از یک مدل زبانی نخواهید که منبع را حدس بزند و حدس را به عنوان متن بازیابی‌شده ارائه دهد. در عوض، یک خوانش نامطمئن را برای بازبینی علامت‌گذاری کنید.

نتایج برش همچنین علیه یک قانون ساده‌انلگاری «روبی را بردار و همه چیز بهبود می‌یابد» استدلال می‌کنند: دو تفاوت نگارشی باقی ماند و پایان‌بندی‌های جملات تحت تأثیر قرار گرفت. این مشاهده متعلق به این نمونه پاکسازی‌شده خاص است. این به ما می‌گوید که نتیجه را پس از بخش‌بندی تأیید کنیم، نه اینکه برش دادن لزوماً به OCR کمک می‌کند یا صدمه می‌زند.

آزمایش را باز تولید کنید یا یک گزارش بازبینی نگه دارید

بارگیری فایل README آزمایش برای منابع مدل و فونت پین‌شده، نسخه‌های وابستگی، توصیف فایل‌ها و دستورات. فایل تولیدکننده نمونه, اجراکننده OCR، و اسکریپت مقایسه ایجاد، شناسایی و ارزیابی تصویر را جدا می‌کند.

اجراکننده از API کارگر Tesseract.js مستندشده استفاده می‌کند. برای یک ناحیه عمودی، تنظیمات اساسی آن عبارتند از:

const worker = await createWorker("jpn_vert", 1, {
  langPath: modelDirectory,
  gzip: false,
  cacheMethod: "none",
});
await worker.setParameters({
  tessedit_pageseg_mode: "5",
  user_defined_dpi: "300",
});

modelDirectory باید شامل فایل jpn_vert.traineddata دانلودشده و از حالت فشرده خارج‌شده باشد. این یک گزیده است، نه برنامه کامل؛ اجراکننده ارائه‌شده همچنین نتایج خام را ذخیره کرده و کارگرها را متوقف می‌کند.

اگر از برنامه OCR دیگری استفاده می‌کنید، همان مستندات را حفظ کنید، حتی زمانی که نام تنظیمات متفاوت است: ناحیه منبع، فایل اصلی، نسخه مدل یا ابزار، جهت، انتخاب بخش‌بندی، خروجی واقعی، متن اصلاح‌شده و کاراکترهای حل‌نشده. قالب گزارش بررسی خالی است تا این تصور ایجاد نشود که صفحات شما از قبل تأیید شده‌اند.

نتیجه دقیق و کوچک ما را به یک درصد تضمین‌شده برای یک رمان کامل تبدیل نکنید. فونت‌های مختلف، ستون‌های شلوغ، اشکال تاریخی، اسکن‌های با کیفیت پایین و حباب‌های گفتگوی مانگا نیازمند تست‌های نماینده خود هستند. چیدمان مانگا و تشخیص دست‌خط خارج از این آزمایش قرار دارند.

فقط زمانی ترجمه کنید که منبع بازیابی‌شده قابل اعتماد باشد

اگر هدف شما جستجو، کپی کردن نقل‌قول‌ها یا جستجو در دیکشنری است، متن ژاپنی تأییدشده ممکن است نتیجه نهایی باشد. لازم نیست یک سند کامل را صرفاً به این دلیل که OCR درگیر بوده است، ترجمه کنید.

اگر مانع زبانی همچنان مانع خواندن می‌شود و فایل قابل استفاده‌ای برای آپلود دارید، با گردش کار ترجمه PDF ادامه دهید. اسکن اصلی و متن بازنویسی‌شده بررسی‌شده را حفظ کنید تا بتوانید خطاهای تشخیص را از خطاهای ترجمه تشخیص دهید. اجراکننده نمونه فایل‌های متنی و TSV تولید می‌کند، نه یک PDF آماده برای آپلود خودکار؛ فرمت ورودی واقعی مورد نیاز ابزار بعدی خود را آماده کنید.

حالت OCR در BookTranslator محتوای ترجمه‌شده را بازسازی می‌کند تا اینکه چیدمان عمودی اصلی را تضمین کند. فرض نکنید که هر ارتباط یاقوتی (ruby) را حفظ می‌کند یا اشتباهات تشخیص تأییدنشده را اصلاح می‌کند. ترتیب خواندن و قالب‌بندی سند نهایی را با استفاده از راهنمای حفظ فرمت PDF و چک‌لیست نهایی QA برای PDF.

تحویل قابل اعتماد «OCR کامل شد» نیست. بلکه این است که «متن مورد نظر ژاپنی موجود است، توالی آن بررسی شده است، و نحوه برخورد با حاشیه‌نویسی‌ها مستند شده است.»

مطالب مرتبط