تبدیل مواد دوره‌ای به بسته‌های SCORM: راهنمای عملی تبدیل فایل

سیستم‌های مدیریت یادگیری (LMS) برای بسته‌بندی، ارائه و ردیابی محتوای الکترونیکی از استاندارد SCORM (Sharable Content Object Reference Model) استفاده می‌کنند. در حالی که ابزارهای نویسندگی به‌صورت خودکار بسته‌های SCORM تولید می‌کنند، بسیاری از سازمان‌ها پیش از این کتابخانه‌ای از دارایی‌های گوناگون — PDF، ویدئوهای MP4، اسلایدهای PowerPoint، آزمون‌های HTML — ایجاد کرده‌اند. تبدیل این فایل‌های ناهمگن به یک بسته SCORM یکپارچه و منظم می‌تواند چالش‌برانگیز باشد، به‌ویژه وقتی که باید کمال بصری، فراداده‌ها و منطق تعامل را حفظ کنید.

این راهنما کل جریان کار تبدیل را، از بازرسی دارایی‌ها تا فشرده‌سازی نهایی، مرور می‌کند و تصمیماتی که بر سازگاری، دسترسی‌پذیری و حریم خصوصی داده‌ها تأثیر می‌گذارند، برجسته می‌کند. اصول ارائه‌شده هم‌زمان با استفاده از پلتفرم نویسندگی اختصاصی و یا یک مبدل عمومی مثل convertise.app برای نرمال‌سازی فرمت قبل از بسته‌بندی، قابل اجرا هستند.


1. درک الزامات ساختاری SCORM

SCORM نحوه طراحی محتوای آموزشی شما را تعیین نمی‌کند؛ بلکه یک ساختار پوشه‌ای و مجموعه کوچکی از فایل‌های XML manifest را که LMS می‌خواند، تعریف می‌کند. حداقل یک بسته SCORM 1.2 یا 2004 باید شامل موارد زیر باشد:

  • imsmanifest.xml – توصیف‌گر اصلی که هر منبع را فهرست می‌کند، قوانین توالی را تعریف می‌کند و شناسه‌ها را به مسیرهای فایل مرتبط می‌سازد.
  • پوشه Resources – تمام رسانه‌ها (تصاویر، صدا، ویدئو) و فایل‌های سندی که در manifest اشاره شده‌اند.
  • نقطهٔ ورود HTML – صفحهٔ راه‌اندازی (معمولاً index.html) که LMS داخل یک iframe بارگذاری می‌کند.

هر دارایی اضافی — جزوه‌های PDF، آزمون‌های سازگار با SCORM یا کتابخانه‌های JavaScript — باید در manifest با تگ‌های <resource> مناسب ارجاع داده شود. ورودهای گمشده یا نام‌گذاری نادرست باعث می‌شود LMS بسته را رد کند یا بدتر، تجربهٔ آموزشی خراب ارائه دهد.


2. بازرسی دارایی‌های موجود

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

داراییفرمت فعلیاستفاده مورد نظرتبدیل‌های مورد نیازآیا Metadata حفظ شود؟
ویدئوی درسMOVویدئوی توکارتبدیل به MP4 (H.264)بله (تاریخ ایجاد)
اسلایدPPTXنمایش HTMLخروجی به PDF → HTMLخیر
بانک سؤالXLMآزمون SCORMخروجی به QTI XMLبله
جزوهDOCلینک دانلودتبدیل به PDF/Aبله

این جدول دو سؤال حیاتی را برمی‌انگیزد:

  1. کدام فرمت را LMS به‌صورت بومی پشتیبانی می‌کند؟ اکثر LMSهای مدرن MP4 را برای ویدئو، PDF برای سند و HTML5 برای محتوای تعاملی می‌پذیرند.
  2. کدام فراداده‌ها باید پس از تبدیل باقی بمانند؟ برای تبعیت و تحلیل ممکن است نیاز به نگهداری نویسنده، تاریخ ایجاد یا شمارهٔ نسخه داشته باشید.

3. نرمال‌سازی فایل‌های رسانه‌ای

3.1 تبدیل ویدئو

فایل‌های ویدئویی اغلب به‌صورت MOV، AVI یا فرمت‌های اختصاصی دوربین می‌آیند. ویدئوی سازگار با SCORM باید MP4 باشد که از کدک ویدئویی H.264 و صوتی AAC با بیت‌ریت متناسب (معمولاً ۲–۴ Mbps برای 720p، ۵–۶ Mbps برای 1080p) استفاده می‌کند. مراحل تبدیل عبارتند از:

  1. استخراج فرادادهٔ منبع (مثلاً ffprobe می‌تواند تاریخ ایجاد، عکاس، GPS را خروجی دهد). این داده‌ها را در یک فایل JSON جانبی ذخیره کنید تا بعداً دوباره تزریق شوند.
  2. رمزگذاری دو عبوری برای رسیدن به بیت‌ریت هدف در حالی که فواصل کلید‑فریم‌ها هماهنگ با زمان‑نشان‌های تعاملی بمانند.
  3. برش یا چرخش بدون افت کیفیت اگر منبع نوارهای سیاه یا پرچم جهت‌گیری داشته باشد.
  4. بازنگاشت فراداده‌های نگه‌داشته‌شده با ابزارهایی مانند ffmpeg -metadata تا LMS بتواند آن را در کتابخانهٔ دارایی‌ها نشان دهد.

اگر نیاز به حفظ حریم خصوصی دارید، پیش از فشرده‌سازی نهایی هر دادهٔ مکان یا برچسب تشخیص چهره‌ای را پاک کنید.

3.2 تبدیل تصویر و گرافیک

تصاویر رستر باید برای گرافیک‌های بدون افت (آیکون، اسکرین‌شات UI) PNG و برای عکاسی JPEG باشند. هنگام تبدیل نمودارهای SVG، اگر LMS نتواند SVG را رندر کند، به PNG با ۳۰۰ dpi صادر کنید. پروفایل‌های رنگی (sRGB) را برای جلوگیری از تغییرات رنگ در دستگاه‌های مختلف حفظ کنید. مسیر معمول:

  • اعتبارسنجی فضای رنگ منبع با exiftool.
  • تبدیل با imagemagick convert source.svg -density 300 -colorspace sRGB output.png.
  • حذف فیلدهای EXIF غیرضروری برای سبک وزن نگه داشتن فایل، در حالی که اطلاعات ارجاعی حفظ می‌شود.

4. تبدیل اسناد به HTML آماده برای وب

اکثر صفحات راه‌اندازی SCORM بر پایه HTML5 هستند. به‌جای جاسازی مستقیم PDFها، آن‌ها را به مجموعه‌ای از صفحات وب تبدیل کنید:

  1. صادر کردن PowerPoint یا Word به PDF؛ ابزارهایی را استفاده کنید که اشیای برداری را دست‌نخورده حفظ می‌کنند (مثلاً «Save as PDF» مایکروسافت آفیس).
  2. اجرای OCR (اختیاری)؛ اگر PDF شامل صفحات اسکن‌شده است، OCR متنی قابل جستجو می‌سازد و دسترسی را بهبود می‌بخشد.
  3. تبدیل PDF به HTML با مبدلی که سرفصل‌ها، جدول‌ها و فهرست‌ها را حفظ می‌کند. ابزارهایی که DOM پاکی تولید می‌کنند (بدون بلوک‌های استایل داخلی) ادغام با JavaScript ردیابی SCORM را راحت‌تر می‌سازند.
  4. درج نشانه‌های ARIA به‌صورت دستی یا از طریق اسکریپت خودکاری که سلسله‌مراتب سرفصل‌ها را به تگ‌های <section> نگاشت می‌کند.
  5. فشرده‌سازی HTML خروجی با gzip در سطح سرور وب؛ خود فایل zip SCORM بدون فشرده‌سازی باقی می‌ماند چون LMS انتظار یک ‌دایرکتوری صاف دارد.

در این فرایند، فرادادهٔ اصلی سند (نویسنده، بازنگری) را با افزودن تگ‌های <meta> داخل <head> هر صفحه حفظ کنید.


5. ساخت ارزیابی‌های تعاملی

SCORM می‌تواند آزمون‌هایی را که با HTML/JavaScript ساخته شده‌اند میزبانی کند، اما بسیاری از سازمان‌ها بانک سؤال خود را در قالب QTI، GIFT یا برگه‌های Excel اختصاصی دارند. جریان تبدیل به این شکل است:

  • صادر کردن پرسشنامه منبع به فرمتی خنثی مانند CSV یا XML.
  • نقشه‌برداری هر ستون به سلسله‌مراتب عنصر QTI (item, response, outcome). اسکریپت‌های پایتون کوتاه می‌توانند این نقشه‌برداری را خودکار کنند.
  • ایجاد فایل‌های XML QTI و قرار دادن آن‌ها در پوشهٔ questions.
  • افزودن یک wrapper JavaScript که QTI را می‌خواند، سؤال را رندر می‌کند، پاسخ یادگیرنده را دریافت می‌کند و نتیجه را از طریق API SCORM (معمولاً SetValue("cmi.score.raw", score)) به LMS ارسال می‌کند.

اگر نیروی توسعه داخلی ندارید، می‌توانید از موتور نویسندگی متن‌باز مثل ADL X‑API که QTI را می‌پذیرد و shim JavaScript مورد نیاز را ایجاد می‌کند، استفاده کنید.


6. ساخت Manifest (imsmanifest.xml)

manifest قلب یک بسته SCORM است. مثال حداقلی ولی مقاوم برای یک ماژول تک‌درس به شکل زیر است:

<?xml version="1.0" encoding="UTF-8"?>
<manifest identifier="com.example.course1" version="1.2"
          xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
          xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2"
          xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_rootv1p2p1">
  <metadata>
    <schema>ADL SCORM</schema>
    <schemaversion>1.2</schemaversion>
  </metadata>
  <organizations default="ORG-1">
    <organization identifier="ORG-1" structure="hierarchical">
      <title>Course Title – Module 1</title>
      <item identifier="ITEM-1" identifierref="RES-INDEX">
        <title>Lesson Overview</title>
      </item>
    </organization>
  </organizations>
  <resources>
    <resource identifier="RES-INDEX" type="webcontent" adlcp:scormtype="sco" href="index.html">
      <file href="index.html"/>
      <file href="assets/video.mp4"/>
      <file href="assets/handout.pdf"/>
      <file href="questions/q1.xml"/>
    </resource>
  </resources>
</manifest>

نقاط کلیدی:

  • adlcp:scormtype="sco" یک شیء محتوای قابل اشتراک (Sharable Content Object) را نشان می‌دهد که می‌تواند اجرا شده و به LMS گزارش دهد.
  • هر فایل فیزیکی که شیء SCORM از آن استفاده می‌کند باید در یک عنصر <file> فهرست شود. عدم وجود فایل‌ها منجر به خطای «منبع یافت نشد» در زمان اجرا می‌شود.
  • از شناسه‌های قابل‌خواندن برای انسان (RES-INDEX، ITEM-1) برای ساده‌سازی دیباگ استفاده کنید.

وقتی چندین درس دارید، بلوک <item> را تکرار کنید و به منابع متفاوت ارجاع دهید.


7. ترکیب آرشیو Zip

پس از آماده‌سازی تمام دارایی‌ها و اعتبارسنجی manifest، zip را با ساختار پوشه‌ای دقیق مورد نیاز SCORM بسازید:

my_course.zip
├─ imsmanifest.xml
├─ index.html
├─ assets/
│   ├─ video.mp4
│   ├─ handout.pdf
│   └─ diagram.png
└─ questions/
    └─ q1.xml

مهم: داخل zip پوشهٔ سطح‑بالا (top‑level directory) قرار ندهید؛ LMS انتظار دارد manifest در ریشه باشد. از ابزار خط‌فرمان که زمان‌های فایل را حفظ می‌کند استفاده کنید (zip -X -r my_course.zip .). زمان‌ stamps اصلی دارایی‌ها را حفظ کنید؛ برخی LMSها ویژگی lastModified فایل را به یادگیرندگان نشان می‌دهند.


8. اعتبارسنجی بسته

پیش از بارگذاری، بسته را از طریق یک اعتبارسنجی‌کننده SCORM مانند SCORM Test Suite ADL یا Rustic SCORM Cloud متن‌باز عبور دهید. اعتبارسنجی موارد زیر را بررسی می‌کند:

  • صحت نحوی manifest و ویژگی‌های ضروری.
  • وجود تمام فایل‌های ارجاع‌شده.
  • تبعیت از نسخهٔ SCORM انتخابی (1.2 در مقابل 2004).
  • صحت فراخوانی‌های API در صفحه راه‌اندازی (مثلاً Initialize()، Terminate()).

اگر اعتبارسنجی فراداده‌های گمشده‌ای را گزارش کند، به گام‌های تبدیل بازگردید تا برچسب‌های لازم را دوباره جاسازی کنید.


9. خودکارسازی جریان کار

برای سازمان‌هایی که باید ده‌ها دوره را تبدیل کنند، مراحل دستی به یک گلوگاه تبدیل می‌شوند. یک خط لولهٔ خودکار ساده می‌تواند با یک زبان اسکریپت‌نویسی (Python یا Bash) مراحل زیر را برگزار کند:

  1. کشف – اسکن یک پوشهٔ منبع برای دارایی‌های جدید.
  2. تبدیل – فراخوانی ffmpeg، imagemagick و سرویس PDF‑to‑HTML (مانند API ارائه‌شده توسط convertise.app) برای تولید خروجی‌های استاندارد.
  3. استخراج فراداده – استفاده از exiftool برای استخراج نویسنده و تاریخ، سپس نوشتن metadata.json که بعداً در تولید manifest به کار می‌رود.
  4. تولید Manifest – پرکردن یک قالب Jinja2 با لیست فایل‌ها و فراداده‌ها.
  5. بسته‌بندی – زپ کردن پوشه، اجرای اعتبارسنجی SCORM و انتقال zip به یک bucket خروجی.

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


10. ملاحظات حریم خصوصی و امنیت

اگرچه تبدیل به‌صورت محلی یا در ابر خصوصی انجام می‌شود، به نکات زیر توجه داشته باشید:

  • حذف GPS توکار از تصاویر و ویدئوها با ffmpeg -metadata location=.
  • حذف لایه‌های متن مخفی از PDFهایی که ممکن است نظرات بازبینی‌کنندگان را داشته باشند.
  • رمزنگاری zip نهایی فقط در صورتی که LMS از آپلودهای SCORM رمزگذاری‌شده پشتیبانی کند؛ در غیر این صورت zip را در یک مخزن امن نگهداری کنید و دسترسی را از طریق سیاست‌های IAM کنترل کنید.
  • لاگ‌های حسابرسی – ثبت کنید چه کسی هر تبدیل را آغاز کرده و از چه فایل‌های منبعی استفاده شده است. این کار به پاسخ‌گویی به پرسش‌های GDPR یا HIPAA در زمان شامل شناسه‌های شخصی کمک می‌کند.

11. مشکلات رایج و راه‌حل‌های آن‌ها

علامتعلت محتملراه‌حل
LMS بسته را با پیغام "Manifest not found" رد می‌کندzip شامل یک پوشهٔ سطح‑بالا استمحتویات را مستقیماً در ریشه zip کنید
ویدئو پخش می‌شود اما صدا نیستکدک صوتی پشتیبانی نمی‌شود (مثلاً PCM)صدا را به AAC 128 kbps تبدیل کنید
نمرات آزمون گزارش نمی‌شودJavaScript قبل از Terminate فراخوانی SetValue را انجام نمی‌دهداطمینان حاصل کنید که wrapper SCORM قبل از خروج صفحه داده را می‌نویسد
PDF جزوه در نماینده LMS خالی باز می‌شودPDF از روش فشرده‌سازی جدیدی استفاده می‌کند که پشتیبانی نمی‌شودبه PDF/A‑1b تبدیل کنید برای حداکثر سازگاری

پرداختن به این موارد در اوایل، زمان دوره‌های تست را به‌طور قابل‌ملاحظه‌ای کاهش می‌دهد.


12. مثال واقعی: از مواد آموزشی قدیمی به SCORM

سناریو: یک شرکت تولیدی دارای کتابخانهٔ آموزشی سنتی شامل دک‌های PowerPoint (PPTX)، ویدئوهای ضبط‌شده در WMV و جزوه‌های PDF است. هدف ارائه محتوا از طریق LMS است که فقط SCORM 2004 می‌پذیرد.

مراحل انجام شده:

  1. باورسی‌دارایی ۴۵ فایل PPTX، ۳۰ ویدئوی WMV و ۶۰ PDF شناسایی شد.
  2. تبدیل ویدئو با اسکریپت batch: ffmpeg -i "$in" -c:v libx264 -crf 22 -c:a aac -b:a 128k "${in%.*}.mp4".
  3. دک‌ها به PDF با CLI PowerPoint صادر شد، سپس با pandoc --standalone به HTML تبدیل شد تا جداول و سرفصل‌ها حفظ شوند.
  4. فراداده با exiftool استخراج و به تگ‌های <meta> داخل <head> هر صفحه HTML افزوده شد.
  5. ساخت آزمون از یک CSV سؤالات چندگزینه‌ای، با یک اسکریپت Python به QTI تبدیل شد.
  6. تولید Manifest با قالب Jinja2 که بر پایه CSV فهرست دارایی‌ها شناسه‌ها را به‌طور خودکار اختصاص می‌داد.
  7. اعتبارسنجی توسط SCORM Cloud دو مرجع تصویر گمشده را شناسایی کرد؛ فایل‌های گمشده به zip اضافه شدند.
  8. تحویل – zip نهایی (۱.۳ GB فشرده) در LMS بارگذاری شد و آزمون‌های سازگاری فروشنده را با موفقیت عبور کرد.

این پروژه زمان نویسندگی دستی را به‌صورت ۷۰ % کاهش داد و تجربهٔ یادگیری یکسانی را برای تمام ماژول‌ها تأمین کرد.


13. خلاصهٔ بهترین روش‌ها

  1. اول بازرسی کنید – جدول واضح از دارایی‌ها مانع گم‌شدن محتوا می‌شود.
  2. رسانه‌ها را به فرمت‌های پشتیبانی‌شده نرمال کنید (MP4، JPEG/PNG، PDF/A).
  3. فراداده‌های حیاتی را حفظ کنید؛ قبل از تبدیل استخراج و پس از تبدیل مجدداً جاسازی کنید.
  4. manifest پاک و معتبر تولید کنید؛ آن را مانند کد در نظر بگیرید – lint کنید.
  5. بسته را بدون پوشه‌های اضافی zip کنید و زمان‌ stamps اصلی را نگه دارید.
  6. به‌زودی معتبرسازی کنید با یک مجموعه آزمون SCORM تا خطاهای ساختاری را شناسایی کنید.
  7. در صورت حجم کار، خط لوله را خودکار کنید؛ لاگ‌ها را برای حسابرسی نگه دارید.
  8. داده‌های حساسی را حین تبدیل پاک کنید، به‌ویژه متادیتای تصویر و ویدئو.

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


تکنیک‌های توضیح‌داده‌شده در اینجا به‌صورت مستقل از پلتفرم هستند؛ می‌توانید آن‌ها را با مبدل‌های ابری مانند convertise.app برای نرمال‌سازی سریع و متمرکز بر حریم خصوصی ترکیب کنید.