Beancount در مقابل hledger: کدام ابزار حسابداری متن-ساده برای شما مناسب است؟
اگر تصمیم گرفتهاید امور مالی خود را با حسابداری متنی (Plain-Text Accounting) مدیریت کنید، همین حالا انتخاب هوشمندانهای انجام دادهاید. دادههای مالی شما در فایلهایی با قابلیت خواندن توسط انسان ذخیره میشوند که کنترل کامل آنها در دست شماست، توسط سیستمهای کنترل نسخه ردیابی میشوند و از وابستگی به فروشندگان نرمافزاری خاص رها هستید. اما اکنون سوال بعدی پیش میآید: از کدام ابزار باید استفاده کنید؟
Beancount و hledger دو مورد از محبوبترین ابزارهای حسابداری متنی (PTA) امروزی هستند. هر دو متنباز هستند، به طور فعال نگهداری میشوند و قادر به مدیریت همهچیز از بودجهبندی شخصی گرفته تا سبدهای سرمایهگذاری پیچیده هستند. با این حال، آنها رویکردهای اساساً متفاوتی در نحوه ثبت، اعتبارسنجی و تجزیه و تحلیل دادههای مالی شما دارند.
این راهنما تفاوتهای کلیدی را بررسی میکند تا بتوانید ابزاری را انتخاب کنید که با جریان کاری، سطح تجربه و نیازهای ردیابی مالی شما سازگار باشد.
فلسفه اصلی: سختگیرانه در مقابل منعطف
بزرگترین تفاوت بین Beancount و hledger یک ویژگی نیست، بلکه یک طرز فکر است.
Beancount مانند یک معلم سختگیر است. فرض را بر این میگذارد که شما در وارد کردن دادهها اشتباه خواهید کرد و برای شناسایی زودهنگام آنها، موانع حفاظتی ایجاد میکند. هر حساب باید قبل از استفاده صراحتاً باز (open) شود. هر تراکنش باید به صفر تراز شود. ارزها باید از یک فرمت سفت و سخت پیروی کنند. اگر چیزی درست به نظر نرسد، Beancount از پردازش فایل شما تا زمانی که آن را اصلاح نکنید، خودداری میکند.
hledger مانند یک دوست بخشنده است. از نحو (syntax) منعطفتری استفاده میکند، به شما اجازه میدهد از پیشتعریف حسابها صرفنظر کنید و حتی میتواند ورودیهای ترازکننده را استنتاج کند. شما میتوانید ردیابی امور مالی را با حداقل تنظیمات شروع کنید و با رشد نیازهایتان، به تدریج به آن ساختار اضافه کنید.
هیچکدام از این دو رویکرد به طور مطلق برتر نیستند. اگر برایتان مهم است که خطاها را قبل از اینکه به ساعتها عیبیابی تبدیل شوند شناسایی کنید، سختگیری Beancount یک مزیت است. اگر میخواهید سریع شروع کنید و انعطافپذیری را ترجیح میدهید، تساهل hledger یک امتیاز محسوب میشود.
نحو و فرمت دادهها
هر دو ابزار تراکنشها را در فایلهای متن ساده ذخیره میکنند، اما قوانین نحو آنها تفاوت معناداری دارد.
نحو Beancount
2026-03-15 * "Whole Foods" "Weekly groceries"
Expenses:Food:Groceries 85.42 USD
Liabilities:CreditCard:Visa
قوانین کلیدی:
- تاریخها از فرمت ISO 8601 استفاده میکنند (
YYYY-MM-DD) - ارزها باید حروف بزرگ باشند (مانند
USD,EUR) و از نمادهایی مثل$یا€استفاده نمیشود - نام حسابها به حداقل دو بخش نیاز دارند که با دونقطه از هم جدا میشوند (مانند
Expenses:Food) - توضیحات باید رشتههای داخل کوتیشن باشند
- تمام حسابها باید صراحتاً با دستور
openباز شوند
نحو hledger
2026-03-15 Whole Foods | Weekly groceries
expenses:food:groceries $85.42
liabilities:creditcard:visa
قوانین کلیدی:
- فرمتهای تاریخ منعطفتر
- استفاده از نمادهای ارز مانند
$و€مجاز است - نام حسابها میتواند با حروف کوچک و با فرمت آزادتر باشد
- توضیحات نیازی به کوتیشن ندارند
- نیازی به پیشتعریف حسابها نیست
نتیجهگیری: نحو سختگیرانهتر Beancount به معنای کار اولیه بیشتر اما ابهام کمتر است. نحو منعطف hledger برای شروع آسانتر است اما برای حفظ ثبات به انضباط بیشتری نیاز دارد.
یکپارچگی و اعتبارسنجی دادهها
اینجاست که Beancount واقعاً خود را متمایز میکند.
تاییدیه موجودی (Balance Assertions)
هر دو ابزار از تاییدیههای موجو دی پشتیبانی میکنند؛ دستوراتی که بررسی میکنند موجودی ثبتشده شما با صورتحساب بانکی مطابقت داشته باشد. اما عملکرد آنها متفاوت است.
Beancount از تاییدیههای موجودی تاریخدار استفاده میکند که مستقل از ترتیب هستند. شما میتوانید فایلهای تراکنش خود را هر طور که دوست دارید جابهجا کنید و تاییدیهها همچنان به درستی کار میکنند. تاییدیههای hledger به ترتیب فایل وابسته هستند، به این معنی که جابهجایی تراکنشها میتواند باعث خرابی آنها شود.
ردیابی موجودی (Inventory Tracking)
برای هر کسی که سرمایهگذاریها را ردیابی میکند، این موضوع اهمیت زیادی دارد. Beancount ثبت دقیق موجودی را اجباری میکند: شما نمیتوانید سهامی را که هرگز نخریدهاید بفروشید و بهای تمام شده (cost basis) را با دقت ردیابی میکند. این کار از "نشت بهای تمام شده" جلوگیری میکند؛ یک خطای نامحسوس که در آن محاسبات عایدی سرمایه شما از واقعیت فاصله میگیرد.
hledger کالاها و لاتها (lots) را مدیریت میکند اما با اجبار کمتر. این ابزار منعطفتر است، که به این معنی است که در برابر اشتباهاتی که ممکن است تا زمان مالیات متوجه آنها نشوید، بخشندهتر است.
دستهبندی حسابها
Beancount مستلزم آن است که هر حساب به یکی از پنج دسته تعلق داشته باشد: داراییها (Assets)، بدهیها (Liabilities)، درآمدها (Income)، هزینهها (Expenses) یا سرمایه (Equity). این محدودیت به آن اجازه میدهد تا ترازنامهها و صورتهای سود و زیان مناسب را به طور خودکار تولید کند.
hledger اجازه سلسلهمراتب دلخواه حسابها را بدون دستهبندیهای ریشه اجباری میدهد. این به شما آزادی بیشتری میدهد اما به این معنی است که برای دریافت گزارشهای مالی معنادار، باید قراردادها را به صورت دستی دنبال کنید.
رابط کاربری و گزارشدهی
Beancount + Fava
ویژگی برجسته Beancount، Fava است، یک رابط وب صیقلخورده که موارد زیر را ارائه میدهد:
- نمودارها و گرافهای تعاملی (روند ارزش خالص، تفکیک هزینهها، درآمد در مقابل هزینهها)
- تصویرسازیهای Treemap برای دستهبندیهای مخارج
- فیلترینگ قدرتمند بر اساس حساب، تگ، دوره زمانی و پرداختکننده
- یک زبان کوئری برای گزارشهای سفارشی
- یک ویرایشگر داخلی برای فایلهای دفتر کل شما
Fava به طور گسترده به عنوان بهترین رابط کاربری در اکوسیستم حسابداری متنی شناخته میشود. اگر فردی بصری هستید که به داشبوردها و نمودارها علاقه دارید، این یک امتیاز بزرگ برای Beancount است.
رابطهای hledger
hledger رویکردی چندرابطی دارد:
- CLI: گزارشگیری قدرتمند در خط فرمان با دهها دستور داخلی (
balance،register،incomestatement،cashflowو موارد دیگر) - hledger-ui: یک رابط کاربری مبتنی بر ترمینال برای مرور تعاملی حسابها و تراکنشها
- hledger-web: یک رابط وب سادهتر برای مرور اولیه و وارد کردن دادهها
رابط خط فرمان (CLI) hledger در حالت پیشفرض قدرتمندتر از Beancount است. اگر در محیط ترمینال فعالیت میکنید و به گزارشهای سریع و قابل اسکریپتنویسی نیاز دارید، hledger نیاز شما را برآورده میکند.
عملکرد
hledger با زبان Haskell نوشته شده و تقریباً ۲۵,۰۰۰ تراکنش را در ثانیه پردازش میکند. برای اکثر کاربران امور مالی شخصی، هر دو ابزار عملاً آنی عمل میکنند. اما اگر در حال مدیریت مجموعه دادههای بزرگ هستید — سالها تراکنش در چندین واحد اقتصادی — سرعت خام hledger به آن برتری میدهد.
Beancount (نسخه ۳) برای بخش تجزیهگر (Parser) اصلی خود با C++ بازنویسی شده است که عملکرد آن را نسبت به پیادهسازی اصلی پایتون به طرز قابل توجهی بهبود بخشیده است. برای استفادههای معمول شخصی یا کسبوکارهای کوچک، تفاوتی احساس نخواهید کرد.
قابلیت گسترش و افزونهها
افزونههای Beancount
Beancount دارای یک سیستم افزونه بومی پایتون است که بهطور شگفتانگیزی قدرتمند است. افزونهها میتوانند:
- تراکنشها را بهطور خودکار تقسیم کنند (مثلاً هزینههای مشترک)
- تراکنشهای تکرار شونده ایجاد کنند
- قوانین اعتبارسنجی سفارشی را اعمال کنند
- دادهها را در خط لوله پردازش تغییر دهند
اکوسیستم پایتون به این معنی است که میتوانید از هر کتابخانه پایتون در افزونههای خود استفاده کنید. این امر Beancount را برای سناریوهای مالی پیچیده بسیار سفارشیپذیر میکند.
افزونههای hledger
hledger قابلیت گسترش را از طریق موارد زیر ارائه میدهد:
- قوانین وارد کردن CSV برای خودکارسازی صورتحسابهای بانکی
- اسکریپتهای گزارشگیری سفارشی با استفاده از خروجی CLI
- یک API از نوع HTTP-JSON برای ساخت ابزارهای یکپارچه
- دستورات افزودنی مبتنی بر Haskell
سیستم وارد کردن فایلهای CSV در hledger بسیار مورد تحسین قرار گرفته است؛ این سیستم خودکارسازی وارد کردن صورتحسابهای بانکی را با فایلهای قانونی که ستونهای CSV را به پستهای حساب متصل میکنند، ساده میسازد.
شروع به کار و منحنی یادگیری
hledger: ورود آسانتر
شروع کار با hledger بهطور کلی آسانتر است:
- نصب یک فایل اجرایی واحد (پشتیبانی عالی از پلتفرمهای مختلف، از جمله ویندوز)
- ایجاد یک فایل و شروع ثبت تراکنشها بلافاصله
- عدم نیاز به تعریف حسابها یا پیروی از قراردادهای نامگذاری سختگیرانه
- مستندات جامع و بهخوبی نگهداری شده
- جامعه فعال با منابع مناسب برای مبتدیان
Beancount: تنظیمات بیشتر، ساختار د قیقتر
Beancount به تنظیمات اولیه بیشتری نیاز دارد:
- نصب پایتون و Beancount (و Fava برای رابط وب)
- تعریف حسابها قبل از استفاده از آنها
- پیروی از قوانین دستوری سختگیرانه از روز اول
- یادگیری دستهبندیهای پنجگانه حسابها
مزیت این است که این سرمایهگذاری اولیه در طول زمان نتیجه میدهد. یک دفتر کل Beancount با ساختار مناسب، با رشد دادهها، برای نگهداری، اعتبارسنجی و حسابرسی آسانتر است.
جامعه کاربری و اکوسیستم
هر دو پروژه دارای جوامع فعال و حمایتگری هستند:
- Beancount: لیست پستی فعال، اکوسیستم رو به رشد از ابزارهای شخص ثالث (ایمپورترها، افزونهها، افزونههای Fava) و جامعه قدرتمند توسعهدهندگان پایتون
- hledger: انتشار نسخههای مکرر (تقریباً فصلی)، مستندات گسترده، کان الهای گفتگوی فعال و جامعه گستردهتر plaintextaccounting.org
هر دو ابزار از جنبش گستردهتر «حسابداری متنمبنا» (Plain-text accounting) بهره میبرند، که به معنای منابع مشترک، ایمپورترها و دانش جمعی جامعه است.
مهاجرت بین ابزارها
اگر با یکی از ابزارها شروع کنید و بخواهید بعداً آن را تغییر دهید، مهاجرت امکانپذیر است اما چندان ساده نیست:
- hledger به Beancount: از دستور
hledger print -o tmp.beancountبه عنوان نقطه شروع استفاده کنید، سپس نحو را اصلاح کنید (افزودن تعریف حسابها، اصلاح فرمتهای ارز، بازسازی نام حسابها) - Beancount به hledger: ابزار
bean-reportمیتواند خروجی صادر کند، اگرچه معمولاً اصلاحات دستی مورد نیاز است
فلسفه مشترک متنمبنا به این معنی است که دادههای شما هرگز محبوس نمیشوند. شما همیشه میتوانید فایلهای خود را بخوانید و تبدیل کنید، حتی اگر این فرآیند نیاز به مقداری پاکسازی دستی داشته باشد.
جدول مقایسه سریع
| ویژگی | Beancount | hledger |
|---|---|---|
| زبان | پایتون/سیپلاسپلاس | هسکل |
| سختگیری در نحو | سختگیرانه | منعطف |
| تعریف حساب | الزامی | اختیاری |
| بهترین رابط کاربری | Fava (وب) | CLI + TUI |
| ردیابی سرمایهگذاری | عالی | خوب |
| سیستم افزونه | افزونههای پایتون | اسکریپتها + API |
| وارد کردن CSV | از طریق ایمپورترها | قوانین داخلی |
| منحنی یادگیری | شیبدارتر | ملایمتر |
| تاییدیه موجودی | مستقل از ترتیب | وابسته به ترتیب فایل |
| عملکرد | سریع (نسخه ۳) | بسیار سریع |
| پشتیبانی ویندوز | خوب | عالی |
کدامیک را باید انتخاب کنید؟
Beancount را انتخاب کنید اگر:
- یک داشبورد وب زیبا برای تجسم وضعیت مالی خود میخواهید
- سرمایهگذاریها را ردیابی میکنید و به مدیریت دقیق بهای تمام شده نیاز دارید
- سیستمی را ترجیح میدهید که خطاها را زود شناسایی کرده و ثبات را اعمال کند
- با پایتون راحت هستید و قابلیت گسترش قدرتمند افزونهها را میخواهید
- به سازماندهی فایل مستقل از ترتیب اهمیت میدهید
hledger را انتخاب کنید اگر:
- کار در ترمینال با گزارشهای سریع و قابل اسکریپتنویسی را ترجیح میدهید
- میخواهید با حداقل تنظیمات بهسرعت شروع به کار کنید
- به پشتیبانی عالی در ویندوز نیاز دارید
- نحو منعطفی را ترجیح میدهید که با سبک شما سازگار شود
- انتشار نسخههای مکرر و نگهداری فعال را میپسندید
حقیقت محض: هر دو ابزار عالی هستند. جامعه حسابداری متنمبنا بدون توجه به ابزاری که استفاده میکنید پذیرای شماست و مهارتهایی که با یکی یاد میگیرید بهراحتی به دیگری منتقل میشوند. ابزاری را انتخاب کنید که با جریان کاری شما سازگار است، آن را به مدت یک ماه امتحان کنید و در صورت نیاز تغییر دهید.