• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

شمارش تعداد کلمات در فایل pdf و word

salam_ali

Registered User
تاریخ عضویت
8 ژوئن 2005
نوشته‌ها
81
لایک‌ها
1
سلام
می خواستم بپرسم چه روشی برای خروجی گرفتن متن یک فایل pdf یا word بر روی یک متغییر است ؟ می خوام تعداد کلمات متن فایل های مورد نظر را بشمارم . در ضمن فارسی و انگلیسی را هم ساپورت کند.

ممنون
 

Hasam

Registered User
تاریخ عضویت
2 اکتبر 2007
نوشته‌ها
665
لایک‌ها
159
محل سکونت
flynic.ir
سلام
خب، اول از همه خواندن اطلاعات pdf یا word باید انجام بشه. اینجور کد ها معمولا به راحتی در وب پیدا میشن. کافیه یه جستجو بکنید، مثلا "php pdf to text". من یک نمونه دیدم:
PHP:
include('class.pdf2text.php');
$a = new PDF2Text();
$a->setFilename('Videographer_RFP.pdf'); //grab the test file at http://www.newyorklivearts.org/Videographer_RFP.pdf
$a->decodePDF();
echo $a->output();
البته باید کلاسش رو هم از اینجا بگیرید.

در قسمت دوم برای شمارش کلمات میتونید از تابع str_word_count استفاده کنید.
 

salam_ali

Registered User
تاریخ عضویت
8 ژوئن 2005
نوشته‌ها
81
لایک‌ها
1
دوست عزیز
ممنون از پاسخی که دادید من هم به همین کلاس رسیده بودم ولی یک مشکل دارم و اون اینه که برای فایل های با متن فارسی خروجی به این شکل در می آید و در نتیجه شمارش تعداد کلمات با مشکل روبرو می شود

ƽریĭارƟ ŢنرŤنƿا و نƟ ƽروآ ƽاه دƿدج ƾطاŞţرا و ،ƾţاƗ�طا Ŝجوم روهظ ƽاضƟ ƽزاجم رد رانĩ ناهج ƾƘƣاو هدش هĩ نƿا ،رما š�داƘم و ƽاهوĮƫا šاطاŞţرا ،ƾŤنس ،دیƫوţ ƩاقŤنا و Ɲرصم šاƗ�طا ار هŝ مه هدز و Ŝجوم رییƜţ رد نآ هدش Ţسا . نینģ ƾƿاضƟ هĩ هŝ ناونƗ

آیا در همین کلاس یا کلاس های مشابه راه حلی برای فارسی دارند ؟
ممنون می شوم در مورد فایل ورد هم یک راهنمایی بکنید

ممنون
 
Last edited:

Hasam

Registered User
تاریخ عضویت
2 اکتبر 2007
نوشته‌ها
665
لایک‌ها
159
محل سکونت
flynic.ir
راستش من در مورد کاراکتر های فارسی تجربه‌ی زیادی ندارم. اما اگر بتوان کاراکتر فاصله را در این رشته‌ای که به زبان سرخپوستی هست تشخیص داد، میشه تعداد کلمات رو هم شمارش کرد. این کار نیاز به استعداد و سخت کوشی شما داره. من یکبار چنین مشکلی در تبدیل بانک های FoxPro به SQL داشتم. اما بالاخره حل شد. چیز عجیبی بود، مثلا 4 نوع "ه" وجود داشت (چسبان، غیر چسبان، ابتدایی، انتهایی).

پ.ن: شاید در انجمن‌هایی که زبان های راست به چپ دارند (مثل عربی) کسی این مشکل را قبلا حل کرده باشه.
 

salam_ali

Registered User
تاریخ عضویت
8 ژوئن 2005
نوشته‌ها
81
لایک‌ها
1
دوست عزیز ممنونم از راهنمایی تون ولی به نظر باید راه حل منطقی تری وجود داشته باشد .

دوستان لطفا راهنمایی کنید.
 

sh.n.n786

Registered User
تاریخ عضویت
28 سپتامبر 2011
نوشته‌ها
454
لایک‌ها
94
درود و ...

خوب شما میتونید از این روش استفاده کنید ...

PHP:
$g = file_get_contents('g.pdf');
echo strlen($g);
 

sh.n.n786

Registered User
تاریخ عضویت
28 سپتامبر 2011
نوشته‌ها
454
لایک‌ها
94
درود ...

در ضمن این آرایه مشکلتونو حل میکنه ...

PHP:
$foreign_characters = array(
	'/ä|æ|ǽ/' => 'ae',
	'/ö|œ/' => 'oe',
	'/ü/' => 'ue',
	'/Ä/' => 'Ae',
	'/Ü/' => 'Ue',
	'/Ö/' => 'Oe',
	'/À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ/' => 'A',
	'/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/' => 'a',
	'/Ç|Ć|Ĉ|Ċ|Č/' => 'C',
	'/ç|ć|ĉ|ċ|č/' => 'c',
	'/Ð|Ď|Đ/' => 'D',
	'/ð|ď|đ/' => 'd',
	'/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/' => 'E',
	'/è|é|ê|ë|ē|ĕ|ė|ę|ě/' => 'e',
	'/Ĝ|Ğ|Ġ|Ģ/' => 'G',
	'/ĝ|ğ|ġ|ģ/' => 'g',
	'/Ĥ|Ħ/' => 'H',
	'/ĥ|ħ/' => 'h',
	'/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ/' => 'I',
	'/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/' => 'i',
	'/Ĵ/' => 'J',
	'/ĵ/' => 'j',
	'/Ķ/' => 'K',
	'/ķ/' => 'k',
	'/Ĺ|Ļ|Ľ|Ŀ|Ł/' => 'L',
	'/ĺ|ļ|ľ|ŀ|ł/' => 'l',
	'/Ñ|Ń|Ņ|Ň/' => 'N',
	'/ñ|ń|ņ|ň|ʼn/' => 'n',
	'/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/' => 'O',
	'/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/' => 'o',
	'/Ŕ|Ŗ|Ř/' => 'R',
	'/ŕ|ŗ|ř/' => 'r',
	'/Ś|Ŝ|Ş|Š/' => 'S',
	'/ś|ŝ|ş|š|ſ/' => 's',
	'/Ţ|Ť|Ŧ/' => 'T',
	'/ţ|ť|ŧ/' => 't',
	'/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/' => 'U',
	'/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/' => 'u',
	'/Ý|Ÿ|Ŷ/' => 'Y',
	'/ý|ÿ|ŷ/' => 'y',
	'/Ŵ/' => 'W',
	'/ŵ/' => 'w',
	'/Ź|Ż|Ž/' => 'Z',
	'/ź|ż|ž/' => 'z',
	'/Æ|Ǽ/' => 'AE',
	'/ß/'=> 'ss',
	'/IJ/' => 'IJ',
	'/ij/' => 'ij',
	'/Œ/' => 'OE',
	'/ƒ/' => 'f'
);
 

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
همچین ارایه ای برای حروف فارسی هم وجود داره!؟
 

sh.n.n786

Registered User
تاریخ عضویت
28 سپتامبر 2011
نوشته‌ها
454
لایک‌ها
94
همچین ارایه ای برای حروف فارسی هم وجود داره!؟

درود ...

1- فکر کنم آرایه ای برای فارسی باشه البته زبانش به این شکله سه شنبه که من نمی دونم اسمش چیه بلدی به من هم بگو ...

2- برای جستجوی کلمات هم از sstrstr(); میشه استفاده کرد البته PDF اش رو تست نکردم

موفق باشیی
 

Hasam

Registered User
تاریخ عضویت
2 اکتبر 2007
نوشته‌ها
665
لایک‌ها
159
محل سکونت
flynic.ir
درود و ...

خوب شما میتونید از این روش استفاده کنید ...

PHP:
$g = file_get_contents('g.pdf');
echo strlen($g);

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

بعد از همه این ها برای فایل های فارسی میرسیم به یک متن معکوس (reverse) شده که کافیه دوباره معکوسش کنیم تا به نتیجه برسیم.
 

sh.n.n786

Registered User
تاریخ عضویت
28 سپتامبر 2011
نوشته‌ها
454
لایک‌ها
94
من فکر نمی کنم این روش مناسبی باشه. در مورد اون آرایه هم نظری ندارم.
روش معمول اینه که فایل pdf رو باز کنیم و طبق متادیتا ها، صفحه ها رو از هم جدا کنیم. بعد اگر هر صفحه رو gzip uncompress کنیم، سورس اون صفحه به دست میاد. فقط نکته پیدا کردن اون متادیتا هاست که فکر می کنم قبلا توسط افراد دیگری حل شده و سورسش موجوده.

بعد از همه این ها برای فایل های فارسی میرسیم به یک متن معکوس (reverse) شده که کافیه دوباره معکوسش کنیم تا به نتیجه برسیم.

آخه یه مشکلی هست این کار قبلا روی نسخه 7 کار داده یعنی سورس کد فایل های PDF یک بار هک شده و به محتوای اصلی رسیدن ...

اما الان معلوم نیست با چه ورژنی PDF شده باشه ... اگه عکس هم باهاش باشه که دیگه عن به توان 2 میشه :دی ...

من نظری نمیدم اما اگه موفق شدی به ما هم بگو ...

موفق باشی
 

sh.n.n786

Registered User
تاریخ عضویت
28 سپتامبر 2011
نوشته‌ها
454
لایک‌ها
94
دروود این هم از آرایه فارسی ...

اتفاقی یادم به این تاپیک افتاد ...

key = فارسی

current = ASCII-FA

PHP:
$ASCII = array(
	'&amp#1570;' => 'آ',
	'&amp#1575;' => 'ا',
	'&amp#1576;' => 'ب',
	'&amp#1662;' => 'پ',
	'&amp#1578;' => 'ت',
	'&amp#1579;' => 'ث',
	'&amp#1580;' => 'ج',
	'&amp#1670;' => 'چ',
	'&amp#1581;' => 'ح',
	'&amp#1582;' => 'خ',
	'&amp#1583;' => 'د',
	'&amp#1584;' => 'ذ',
	'&amp#1585;' => 'ر',
	'&amp#1586;' => 'ز',
	'&amp#1688;' => 'ژ',
	'&amp#1587;' => 'س',
	'&amp#1588;' => 'ش',
	'&amp#1589;' => 'ص',
	'&amp#1590;' => 'ض',
	'&amp#1591;' => 'ط',
	'&amp#1592;' => 'ظ',
	'&amp#1593;' => 'ع',
	'&amp#1594;' => 'غ',
	'&amp#1601;' => 'ف',
	'&amp#1602;' => 'ق',
	'&amp#1705;' => 'ک',
	'&amp#1711;' => 'گ',
	'&amp#1604;' => 'ل',
	'&amp#1605;' => 'م',
	'&amp#1606;' => 'ن',
	'&amp#1608;' => 'و',
	'&amp#1607;' => 'ه',
	'&amp#1740;' => 'ی',
	'&amp#1574;' => 'ئ',
	'&amp#1632;' => '0',
	'&amp#1633;' => '1',
	'&amp#1634;' => '2',
	'&amp#1635;' => '3',
	'&amp#1636;' => '4',
	'&amp#1637;' => '5',
	'&amp#1638;' => '6',
	'&amp#1639;' => '7',
	'&amp#1640;' => '8',
	'&amp#1641;' => '9',
	'&ampnbsp;' => ' '
);
 
بالا