Jump to content

Сканиране на лична карта чрез скрипт в NAPS2


Препоръчан пост

Сканиране на лична карта чрез скрипт в NAPS2
 
Често на работещите с документи им се налага да сканират лични карти. Но не всеки софтуер предлага тази възможност. Затова се заех с тестване и настройки на програмата NAPS2 за целта. 
NAPS2 е безплатен софтуер за сканиране с отворен код за Windows, Mac и Linux. Сканирайте лесно с устройства от Canon, Brother, HP, Epson, Fujitsu и други. След това запазете в PDF, TIFF, JPEG или PNG с едно щракване.
Хубавото е, че NAPS2 поддържа command line и чрез нея могат да се изпълняват команди или файлове, включително .bat. А това дава достатъчно възможности.
 
Програма за сканиране: NAPS2
Изходен файл: .pdf с две страници, съдържащи лицето и гърба на личната карта.
 
След като се инсталира NAPS2 е необходимо да се създаде профил /за нуждите на тази тема той е с име "Lichna karta"/ със следните настройки:
 
preview
 
След това се създава нов .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
Сподели другаде

Здравей, имам някои забележки и предложения:

  • Добре е да се поставят командите setlocal и endlocal съответно в началото и в края на файла, в противен случай при повторно пускане може да се получи използване на вече зададени променливи - при така поставени условия Windows ше ги запомни до рестарт на системата.
  • Липсва проверка за местоположението на NAPS2.
  • Лоша идея е да позволяваш на user-а да въвежда име на файл, което по-късно ще използваш (може да въведе интервали и други знаци - знак за процент, например); по-добре да е някаква променлива + пореден номер. Не се занимавай с извличането и форматирането на системната дата, ще си изгубиш времето.
  • Грешките при сканиране и обединяване на файла не дават никаква информация, сигурно може да се измисли нещо по въпроса.
Link to comment
Сподели другаде

Нямаше лошо преди забележките поне една насърчителна дума да има. Ей така ... за подкрепа.

Честно казано доста се колебах преди да пусна темата точно по тези причини. И не останах изненадан. Обезкуражен съм.

Август 2026 правя 20 години от регистрацията си във форума на Софтвизия. След това го напуснах, защото беше залят само от глупости и "забележки".

Явно нищо не се е променило ...

Поздрави !

Моля администратор да ми изтрие темата.

Link to comment
Сподели другаде

Не съм имал намерение да критикувам или обезкуражавам някого и съжалявам, ако съм прозвучал грубо. Просто при мен скрипта не сработи, зачетох се в съдържанието му, видях неща, които не ми харесаха и ги споделих.

Ето нещо, което написах набързо и при мен сработи:

@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
Сподели другаде

Гост
Отговори на тази тема

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   Не можете да качите директно снимка. Качете или добавете изображението от линк (URL)

Loading...
×
×
  • Създай ново...