vesodimov Публикувано Сряда в 13:45 Report Share Публикувано Сряда в 13:45 Сканиране на лична карта чрез скрипт в NAPS2 Често на работещите с документи им се налага да сканират лични карти. Но не всеки софтуер предлага тази възможност. Затова се заех с тестване и настройки на програмата NAPS2 за целта. NAPS2 е безплатен софтуер за сканиране с отворен код за Windows, Mac и Linux. Сканирайте лесно с устройства от Canon, Brother, HP, Epson, Fujitsu и други. След това запазете в PDF, TIFF, JPEG или PNG с едно щракване. Хубавото е, че NAPS2 поддържа command line и чрез нея могат да се изпълняват команди или файлове, включително .bat. А това дава достатъчно възможности. Програма за сканиране: NAPS2 Изходен файл: .pdf с две страници, съдържащи лицето и гърба на личната карта. След като се инсталира NAPS2 е необходимо да се създаде профил /за нуждите на тази тема той е с име "Lichna karta"/ със следните настройки: След това се създава нов .bat файл със следното съдържание: @echo off rem Set console code page to UTF-8 for better character display (may not work on all systems) rem chcp 65001 > nul rem === Variables === set "NAPS2_PATH=C:\Program Files\NAPS2\NAPS2.Console.exe" set "OUTPUT_FOLDER=D:\Scanned_IDs" set "PROFILE_NAME=Lichna karta" set "TEMP_FRONT_PAGE=%TEMP%\ID_Front_Temp.tif" set "TEMP_BACK_PAGE=%TEMP%\ID_Back_Temp.tif" rem set "TIMESTAMP=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%" rem Removed automatic timestamp for manual filename input rem === Get filename from user === echo. echo =========================================== echo Please enter the desired filename for echo the ID card (e.g., Ivan Ivanov ID). echo Do NOT include .pdf extension. echo =========================================== set /p USER_FILENAME="Enter filename: " if "%USER_FILENAME%"=="" ( echo Error: Filename cannot be empty. Exiting. pause exit /b 1 ) set "FINAL_PDF_NAME=%USER_FILENAME%.pdf" rem === Check paths and create folders === if not exist "%OUTPUT_FOLDER%" ( mkdir "%OUTPUT_FOLDER%" if not exist "%OUTPUT_FOLDER%" ( echo Error: Could not create output folder "%OUTPUT_FOLDER%". pause exit /b 1 ) ) rem === Scan front side === echo. echo =========================================== echo Molya, postavele prednata strana na echo lichnata karta na skenera. echo =========================================== echo. pause > nul echo Skanirane na predna strana... rem Using -o with .tif, so we can combine later "%NAPS2_PATH%" -o "%TEMP_FRONT_PAGE%" -p "%PROFILE_NAME%" -n 1 if exist "%TEMP_FRONT_PAGE%" ( echo Prednata strana skanirana uspeshno. ) else ( echo Greshka pri skanirane na predna strana. pause exit /b 1 ) rem === Prompt to flip the card === echo. echo =========================================== echo !!! VAZHNO !!! echo Molya, obarnete lichnata karta na skenera echo i natisnete proizvolen klavish, za da echo skanirate zadnata strana. echo =========================================== echo. pause > nul echo Skanirane na zadna strana... rem Scan back side "%NAPS2_PATH%" -o "%TEMP_BACK_PAGE%" -p "%PROFILE_NAME%" -n 1 if exist "%TEMP_BACK_PAGE%" ( echo ZADNA strana skanirana uspeshno. ) else ( echo Greshka pri skanirane na zadna strana. pause exit /b 1 ) rem === Combine both pages into one PDF === echo. echo Obedinyavane na skaniranite izobrazheniya v edin PDF fail... rem Combine the two temporary TIFF images into one PDF "%NAPS2_PATH%" -i "%TEMP_FRONT_PAGE%" "%TEMP_BACK_PAGE%" -o "%OUTPUT_FOLDER%\%FINAL_PDF_NAME%" if exist "%OUTPUT_FOLDER%\%FINAL_PDF_NAME%" ( echo Uspeshno sazaden fail: "%OUTPUT_FOLDER%\%FINAL_PDF_NAME%" ) else ( echo Greshka pri obedinyavane na failovete. pause exit /b 1 ) rem === Clean up temporary files === if exist "%TEMP_FRONT_PAGE%" del "%TEMP_FRONT_PAGE%" if exist "%TEMP_BACK_PAGE%" del "%TEMP_BACK_PAGE%" echo. echo =========================================== echo Skaniraneto na lichnata karta priklyuchi! echo =========================================== echo. pause rem === Open output folder === explorer "%OUTPUT_FOLDER%" exit /b 0 Готов файл може да изтеглите от ТУК За ваши нужди може да промените параметрите в началото на скрипта - set "OUTPUT_FOLDER=D:\Scanned_IDs" По време на изпълнение на скрипта не е нужно програмата NAPS2 да е стартирана. Важното е да се уверите, че NAPS2_PATH и OUTPUT FOLDER от скрипта са правилни за вашия компютър. Успех ! Цитирай Link to comment Сподели другаде More sharing options...
panevdd Публикувано Сряда в 18:41 Report Share Публикувано Сряда в 18:41 Здравей, имам някои забележки и предложения: Добре е да се поставят командите setlocal и endlocal съответно в началото и в края на файла, в противен случай при повторно пускане може да се получи използване на вече зададени променливи - при така поставени условия Windows ше ги запомни до рестарт на системата. Липсва проверка за местоположението на NAPS2. Лоша идея е да позволяваш на user-а да въвежда име на файл, което по-късно ще използваш (може да въведе интервали и други знаци - знак за процент, например); по-добре да е някаква променлива + пореден номер. Не се занимавай с извличането и форматирането на системната дата, ще си изгубиш времето. Грешките при сканиране и обединяване на файла не дават никаква информация, сигурно може да се измисли нещо по въпроса. Цитирай Link to comment Сподели другаде More sharing options...
vesodimov Публикувано преди 19 часа Author Report Share Публикувано преди 19 часа Нямаше лошо преди забележките поне една насърчителна дума да има. Ей така ... за подкрепа. Честно казано доста се колебах преди да пусна темата точно по тези причини. И не останах изненадан. Обезкуражен съм. Август 2026 правя 20 години от регистрацията си във форума на Софтвизия. След това го напуснах, защото беше залят само от глупости и "забележки". Явно нищо не се е променило ... Поздрави ! Моля администратор да ми изтрие темата. Цитирай Link to comment Сподели другаде More sharing options...
panevdd Публикувано преди 12 часа Report Share Публикувано преди 12 часа Не съм имал намерение да критикувам или обезкуражавам някого и съжалявам, ако съм прозвучал грубо. Просто при мен скрипта не сработи, зачетох се в съдържанието му, видях неща, които не ми харесаха и ги споделих. Ето нещо, което написах набързо и при мен сработи: @echo off setlocal set profile=IDCard set scanexe="C:\Program Files\NAPS2\NAPS2.Console.exe" set savedir=%userprofile%\Pictures\IDCard set imfront=%TEMP%\imfront.tif set imgback=%TEMP%\imgback.tif echo Please, place a front side and press a key... pause > nul %scanexe% -o %imfront% -p %profile% -n 1 echo Please, place a back side and press a key... pause > nul %scanexe% -o %imgback% -p %profile% -n 1 %scanexe% -i %imfront%;%imgback% -n 0 -o "%savedir%\$(nnn).pdf" del %imfront% && del %imgback% endlocal exit Разбира се, няма никакви проверки за наличие на програмата, достъпност на папките и т. н. т.; утре или през почивните дни ще гледам да ги добавя. Цитирай Link to comment Сподели другаде More sharing options...
Препоръчан пост