Как определить, является ли pdf текстом или изображением

У меня есть приложение, куда пользователи могут загружать pdf которые преобразованы в text для дальнейшей обработки.
Дело в том, что некоторые из загруженных файлов имеют формат pdf, поэтому конвертация не работает. Вместо того, чтобы посылать все файлы в формате pdf, которые нужно разделить на изображения, а затем получать их, я бы предпочел отправлять только те изображения, которые были доказаны или обнаружены как изображения, есть ли способ сделать это, я работаю в linux (debian) среда с php

ОБНОВИТЬ

При поиске окончательного решения я следовал совету @ Эндрю, считая количество слов в сгенерированном текстовом файле, если оно меньше 10 слов, переходите к следующему шагу: от pdf к изображениям для последующего распознавания, что я работает над сейчас …

// convert any file with pdf extension to text
$cmd = "pdftotext -eol unix '$uploadedfile'";
shell_exec($cmd);
// save original file at the orig directory
rename("$uploadedfile", "orig/$uploadedfile");
// pdftotext renames files to txt so I need the file name with txt extension
$textfile = preg_replace('"\.(pdf|PDF)$"', '.txt', $uploadedfile);
// count words on the generated txt file
$cmd = "wc -w '$textfile' | cut -f1 -d' '";
$wc = shell_exec($cmd);
// proceed if words are less than 10
if ($wc < 10)
{
//take out the pdf extension for directory creation
$imgdir = preg_replace('"\.(pdf|PDF)$"', '', $uploadedfile);
$cmd = "mkdir '$imgdir'";
shell_exec($cmd);
//change pdf extension to jpg for images creation
$imgfile = preg_replace('"\.(pdf|PDF)$"', '.jpg', $uploadedfile);
//convert pdf to images
$cmd = "convert 'orig/$uploadedfile' '$imgdir/$imgfile'";

тогда придет окр …

UPDATE2
Благодаря предложению @ Mark-Setchell я немного изменил код, теперь последняя часть такова:

//take out the pdf extension for directory creation
$imgdir = preg_replace('"\.(pdf|PDF)$"', '', $uploadedfile);
$cmd = "mkdir '$imgdir'";
shell_exec($cmd);
//convert pdf to images
$cmd = "pdfimages 'orig/$uploadedfile' '$imgdir/$imgdir'";

0

Решение

Вы могли бы использовать pdfimages из пакета Poppler, чтобы перечислить и извлечь все изображения в их исходных форматах, размерах и качествах:

pdfimages -list SomeFile.pdf
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
9     0 image      37    39  icc     3   8  jpeg   no       978  0   102   102  915B  21%
9     1 smask      37    39  gray    1   8  image  no       978  0   102   102  334B  23%
9     2 image     110   120  icc     3   8  jpeg   no       977  0   101   101 2246B 5.7%
9     3 image     113   103  icc     3   8  jpeg   no       976  0   101   101 2951B 8.5%
20     4 image     212   156  icc     3   8  jpeg   no       996  0   101   101 3664B 3.7%
20     5 image      19    23  icc     3   8  jpeg   no      1003  0   103   103 1619B 123%
20     6 smask      19    23  gray    1   8  image  no      1003  0   103   103  291B  67%
22     7 image     212   156  icc     3   8  jpeg   no      1188  0   101   101 3579B 3.6%
24     8 image     212   156  icc     3   8  jpeg   no      1195  0   101   101 2824B 2.8%
25     9 image     212   156  icc     3   8  jpeg   no      1202  0   101   101 3247B 3.3%
25    10 image     348    92  icc     3   8  jpeg   no      1209  0   101   101 5022B 5.2%
25    11 smask     348    92  gray    1   8  jpeg   no      1209  0   101   101  754B 2.4%
32    12 image     600   400  icc     3   8  jpeg   no      1217  0   150   150 26.9K 3.8%
32    13 smask     600   400  gray    1   8  jpeg   no      1217  0   150   150 3090B 1.3%
43    14 image     151   101  icc     3   8  jpeg   no      1228  0   101   102 2656B 5.8%
43    15 image      71    84  icc     3   8  jpeg   no      1227  0   101   101 1540B 8.6%
43    16 image     119    84  icc     3   8  jpeg   no      1226  0   101   101 1768B 5.9%
43    17 image      83    84  icc     3   8  jpeg   no      1230  0   101   101 2082B  10%
43    18 image     118    84  icc     3   8  jpeg   no      1229  0   101   101 2205B 7.4%
46    19 image     170   114  icc     3   8  jpeg   no      1243  0   101   101 2594B 4.5%
46    20 image     125    84  icc     3   8  jpeg   no      1242  0   101   101 3029B 9.6%
46    21 image     125    84  icc     3   8  jpeg   no      1242  0   101   101 3029B 9.6%
46    22 image     126    84  index   1   8  image  no      1244  0   101   101 5849B  55%
48    23 image     226   234  icc     3   8  jpeg   no      1260  0   151   151 5310B 3.3%
48    24 smask     226   234  gray    1   8  image  no      1260  0   151   151   81B 0.2%
48    25 image     226   234  icc     3   8  jpeg   no      1259  0   151   151 10.3K 6.7%
48    26 smask     226   234  gray    1   8  image  no      1259  0   151   151   81B 0.2%
48    27 image     226   234  icc     3   8  jpeg   no      1259  0   151   151 10.3K 6.7%
48    28 smask     226   234  gray    1   8  image  no      1259  0   151   151   81B 0.2%
48    29 image     226   234  icc     3   8  jpeg   no      1264  0   151   151 4052B 2.6%
48    30 smask     226   234  gray    1   8  image  no      1264  0   151   151  284B 0.5%
48    31 image     109   113  index   1   8  image  no      1263  0   151   150 5066B  41%
48    32 smask     109   113  gray    1   8  image  no      1263  0   151   150   76B 0.6%
48    33 image     109   113  index   1   8  image  no      1262  0   151   150 5362B  44%
48    34 smask     109   113  gray    1   8  image  no      1262  0   151   150   76B 0.6%
48    35 image     226   234  index   1   8  image  no      1261  0   151   151 15.5K  30%
48    36 smask     226   234  gray    1   8  image  no      1261  0   151   151  284B 0.5%
50    37 image     156   103  icc     3   8  jpeg   no      1291  0   101   101 3625B 7.5%
50    38 smask     156   103  gray    1   8  jpeg   no      1291  0   101   101  490B 3.0%
50    39 image     156   103  icc     3   8  jpeg   no      1290  0   101   101 3615B 7.5%
50    40 smask     156   103  gray    1   8  jpeg   no      1290  0   101   101  472B 2.9%
50    41 image     157   103  icc     3   8  jpeg   no      1289  0   101   101 3254B 6.7%
50    42 image     157   104  index   1   8  image  no      1292  0   101   101 3020B  18%
52    43 image     181   139  icc     3   8  jpeg   no      1309  0   101   101 4407B 5.8%
52    44 image     181   139  icc     3   8  jpeg   no      1308  0   101   101 4744B 6.3%
52    45 image     181   139  icc     3   8  jpeg   no      1307  0   101   101 2356B 3.1%
53    46 image     261   146  icc     3   8  jpeg   no      1320  0   151   150 6577B 5.8%
53    47 smask     261   146  gray    1   8  image  no      1320  0   151   150  264B 0.7%
53    48 image     261   146  icc     3   8  jpeg   no      1319  0   151   150 7406B 6.5%
53    49 smask     261   146  gray    1   8  image  no      1319  0   151   150  264B 0.7%
53    50 image     261   146  icc     3   8  jpeg   no      1318  0   151   150 9274B 8.1%
53    51 smask     261   146  gray    1   8  image  no      1318  0   151   150  264B 0.7%
53    52 image     261   146  icc     3   8  jpeg   no      1318  0   151   150 9274B 8.1%
53    53 smask     261   146  gray    1   8  image  no      1318  0   151   150  264B 0.7%
53    54 image     261   146  index   1   8  image  no      1323  0   151   150 6681B  18%
53    55 smask     261   146  gray    1   8  image  no      1323  0   151   150  264B 0.7%
53    56 image     261   146  icc     3   8  jpeg   no      1322  0   151   151 7089B 6.2%
53    57 smask     261   146  gray    1   8  image  no      1322  0   151   151  264B 0.7%
53    58 image     261   146  index   1   8  image  no      1321  0   151   150 6981B  18%
53    59 smask     261   146  gray    1   8  image  no      1321  0   151   150  264B 0.7%
58    60 image     600   556  icc     3   8  image  no      1344  0   145   145  289K  30%
58    61 smask     600   556  gray    1   8  jpeg   no      1344  0   145   145 8055B 2.4%
71    62 image     150   175  icc     3   8  jpeg   no      1383  0   101   101 4008B 5.1%
71    63 image     150   174  icc     3   8  jpeg   no      1382  0   101   101 2523B 3.2%
74    64 image     510   456  rgb     3   8  image  no      1392  0   144   144 22.9K 3.4%
74    65 smask     510   456  gray    1   8  image  no      1392  0   144   144 1438B 0.6%
74    66 image     443   177  rgb     3   8  image  no      1398  0   144   144 25.0K  11%
74    67 smask     443   177  gray    1   8  image  no      1398  0   144   144  102B 0.1%

Затем извлеките их, используя extracted как корень имен файлов:

pdfimages SomeDoc.pdf extracted

-rw-r--r--@ 1 mark  staff      915  7 Oct 10:21 extracted-000.jpg
-rw-r--r--  1 mark  staff     4342  7 Oct 10:21 extracted-000.ppm
-rw-r--r--  1 mark  staff     4342  7 Oct 10:21 extracted-001.ppm
-rw-r--r--@ 1 mark  staff     2246  7 Oct 10:21 extracted-002.jpg
-rw-r--r--  1 mark  staff    39615  7 Oct 10:21 extracted-002.ppm
-rw-r--r--@ 1 mark  staff     2951  7 Oct 10:21 extracted-003.jpg
-rw-r--r--  1 mark  staff    34932  7 Oct 10:21 extracted-003.ppm
-rw-r--r--@ 1 mark  staff     3664  7 Oct 10:21 extracted-004.jpg
-rw-r--r--  1 mark  staff    99231  7 Oct 10:21 extracted-004.ppm
-rw-r--r--@ 1 mark  staff     1619  7 Oct 10:21 extracted-005.jpg
-rw-r--r--  1 mark  staff     1324  7 Oct 10:21 extracted-005.ppm
-rw-r--r--  1 mark  staff     1324  7 Oct 10:21 extracted-006.ppm
-rw-r--r--@ 1 mark  staff     3579  7 Oct 10:21 extracted-007.jpg
-rw-r--r--  1 mark  staff    99231  7 Oct 10:21 extracted-007.ppm
-rw-r--r--@ 1 mark  staff     2824  7 Oct 10:21 extracted-008.jpg
-rw-r--r--  1 mark  staff    99231  7 Oct 10:21 extracted-008.ppm
-rw-r--r--@ 1 mark  staff     3247  7 Oct 10:21 extracted-009.jpg
-rw-r--r--  1 mark  staff    99231  7 Oct 10:21 extracted-009.ppm
-rw-r--r--@ 1 mark  staff     5022  7 Oct 10:21 extracted-010.jpg
-rw-r--r--  1 mark  staff    96062  7 Oct 10:21 extracted-010.ppm
-rw-r--r--@ 1 mark  staff      754  7 Oct 10:21 extracted-011.jpg
-rw-r--r--  1 mark  staff    96062  7 Oct 10:21 extracted-011.ppm
-rw-r--r--@ 1 mark  staff    27539  7 Oct 10:21 extracted-012.jpg
-rw-r--r--  1 mark  staff   720015  7 Oct 10:21 extracted-012.ppm
-rw-r--r--@ 1 mark  staff     3090  7 Oct 10:21 extracted-013.jpg
-rw-r--r--  1 mark  staff   720015  7 Oct 10:21 extracted-013.ppm
-rw-r--r--@ 1 mark  staff     2656  7 Oct 10:21 extracted-014.jpg
-rw-r--r--  1 mark  staff    45768  7 Oct 10:21 extracted-014.ppm
-rw-r--r--@ 1 mark  staff     1540  7 Oct 10:21 extracted-015.jpg
-rw-r--r--  1 mark  staff    17905  7 Oct 10:21 extracted-015.ppm
-rw-r--r--@ 1 mark  staff     1768  7 Oct 10:21 extracted-016.jpg
-rw-r--r--  1 mark  staff    30002  7 Oct 10:21 extracted-016.ppm
-rw-r--r--@ 1 mark  staff     2082  7 Oct 10:21 extracted-017.jpg
-rw-r--r--  1 mark  staff    20929  7 Oct 10:21 extracted-017.ppm
-rw-r--r--@ 1 mark  staff     2205  7 Oct 10:21 extracted-018.jpg
-rw-r--r--  1 mark  staff    29750  7 Oct 10:21 extracted-018.ppm
-rw-r--r--@ 1 mark  staff     2594  7 Oct 10:21 extracted-019.jpg
-rw-r--r--  1 mark  staff    58155  7 Oct 10:21 extracted-019.ppm
-rw-r--r--@ 1 mark  staff     3029  7 Oct 10:21 extracted-020.jpg
-rw-r--r--  1 mark  staff    31514  7 Oct 10:21 extracted-020.ppm
-rw-r--r--@ 1 mark  staff     3029  7 Oct 10:21 extracted-021.jpg
-rw-r--r--  1 mark  staff    31514  7 Oct 10:21 extracted-021.ppm
-rw-r--r--  1 mark  staff    31766  7 Oct 10:21 extracted-022.ppm
-rw-r--r--@ 1 mark  staff     5310  7 Oct 10:21 extracted-023.jpg
-rw-r--r--  1 mark  staff   158667  7 Oct 10:21 extracted-023.ppm
-rw-r--r--  1 mark  staff   158667  7 Oct 10:21 extracted-024.ppm
-rw-r--r--@ 1 mark  staff    10564  7 Oct 10:21 extracted-025.jpg
-rw-r--r--  1 mark  staff   158667  7 Oct 10:21 extracted-025.ppm
-rw-r--r--  1 mark  staff   158667  7 Oct 10:21 extracted-026.ppm
-rw-r--r--@ 1 mark  staff    10564  7 Oct 10:21 extracted-027.jpg
-rw-r--r--  1 mark  staff   158667  7 Oct 10:21 extracted-027.ppm
-rw-r--r--  1 mark  staff   158667  7 Oct 10:21 extracted-028.ppm
-rw-r--r--@ 1 mark  staff     4052  7 Oct 10:21 extracted-029.jpg
-rw-r--r--  1 mark  staff   158667  7 Oct 10:21 extracted-029.ppm
-rw-r--r--  1 mark  staff   158667  7 Oct 10:21 extracted-030.ppm
-rw-r--r--  1 mark  staff    36966  7 Oct 10:21 extracted-031.ppm
-rw-r--r--  1 mark  staff    36966  7 Oct 10:21 extracted-032.ppm
-rw-r--r--  1 mark  staff    36966  7 Oct 10:21 extracted-033.ppm
-rw-r--r--  1 mark  staff    36966  7 Oct 10:21 extracted-034.ppm
-rw-r--r--  1 mark  staff   158667  7 Oct 10:21 extracted-035.ppm
-rw-r--r--  1 mark  staff   158667  7 Oct 10:21 extracted-036.ppm
-rw-r--r--@ 1 mark  staff     3625  7 Oct 10:21 extracted-037.jpg
-rw-r--r--  1 mark  staff    48219  7 Oct 10:21 extracted-037.ppm
-rw-r--r--@ 1 mark  staff      490  7 Oct 10:21 extracted-038.jpg
-rw-r--r--  1 mark  staff    48219  7 Oct 10:21 extracted-038.ppm
-rw-r--r--@ 1 mark  staff     3615  7 Oct 10:21 extracted-039.jpg
-rw-r--r--  1 mark  staff    48219  7 Oct 10:21 extracted-039.ppm
-rw-r--r--@ 1 mark  staff      472  7 Oct 10:21 extracted-040.jpg
-rw-r--r--  1 mark  staff    48219  7 Oct 10:21 extracted-040.ppm
-rw-r--r--@ 1 mark  staff     3254  7 Oct 10:21 extracted-041.jpg
-rw-r--r--  1 mark  staff    48528  7 Oct 10:21 extracted-041.ppm
-rw-r--r--  1 mark  staff    48999  7 Oct 10:21 extracted-042.ppm
-rw-r--r--@ 1 mark  staff     4407  7 Oct 10:21 extracted-043.jpg
-rw-r--r--  1 mark  staff    75492  7 Oct 10:21 extracted-043.ppm
-rw-r--r--@ 1 mark  staff     4744  7 Oct 10:21 extracted-044.jpg
-rw-r--r--  1 mark  staff    75492  7 Oct 10:21 extracted-044.ppm
-rw-r--r--@ 1 mark  staff     2356  7 Oct 10:21 extracted-045.jpg
-rw-r--r--  1 mark  staff    75492  7 Oct 10:21 extracted-045.ppm
-rw-r--r--@ 1 mark  staff     6577  7 Oct 10:21 extracted-046.jpg
-rw-r--r--  1 mark  staff   114333  7 Oct 10:21 extracted-046.ppm
-rw-r--r--  1 mark  staff   114333  7 Oct 10:21 extracted-047.ppm
-rw-r--r--@ 1 mark  staff     7406  7 Oct 10:21 extracted-048.jpg
-rw-r--r--  1 mark  staff   114333  7 Oct 10:21 extracted-048.ppm
-rw-r--r--  1 mark  staff   114333  7 Oct 10:21 extracted-049.ppm
-rw-r--r--@ 1 mark  staff     9274  7 Oct 10:21 extracted-050.jpg
-rw-r--r--  1 mark  staff   114333  7 Oct 10:21 extracted-050.ppm
-rw-r--r--  1 mark  staff   114333  7 Oct 10:21 extracted-051.ppm
-rw-r--r--@ 1 mark  staff     9274  7 Oct 10:21 extracted-052.jpg
-rw-r--r--  1 mark  staff   114333  7 Oct 10:21 extracted-052.ppm
-rw-r--r--  1 mark  staff   114333  7 Oct 10:21 extracted-053.ppm
-rw-r--r--  1 mark  staff   114333  7 Oct 10:21 extracted-054.ppm
-rw-r--r--  1 mark  staff   114333  7 Oct 10:21 extracted-055.ppm
-rw-r--r--@ 1 mark  staff     7089  7 Oct 10:21 extracted-056.jpg
-rw-r--r--  1 mark  staff   114333  7 Oct 10:21 extracted-056.ppm
-rw-r--r--  1 mark  staff   114333  7 Oct 10:21 extracted-057.ppm
-rw-r--r--  1 mark  staff   114333  7 Oct 10:21 extracted-058.ppm
-rw-r--r--  1 mark  staff   114333  7 Oct 10:21 extracted-059.ppm
-rw-r--r--  1 mark  staff  1000815  7 Oct 10:21 extracted-060.ppm
-rw-r--r--@ 1 mark  staff     8055  7 Oct 10:21 extracted-061.jpg
-rw-r--r--  1 mark  staff  1000815  7 Oct 10:21 extracted-061.ppm
-rw-r--r--@ 1 mark  staff     4008  7 Oct 10:21 extracted-062.jpg
-rw-r--r--  1 mark  staff    78765  7 Oct 10:21 extracted-062.ppm
-rw-r--r--@ 1 mark  staff     2523  7 Oct 10:21 extracted-063.jpg
-rw-r--r--  1 mark  staff    78315  7 Oct 10:21 extracted-063.ppm
-rw-r--r--  1 mark  staff   697695  7 Oct 10:21 extracted-064.ppm
-rw-r--r--  1 mark  staff   697695  7 Oct 10:21 extracted-065.ppm
-rw-r--r--  1 mark  staff   235248  7 Oct 10:21 extracted-066.ppm
-rw-r--r--  1 mark  staff   235248  7 Oct 10:21 extracted-067.ppm
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]