diff --git a/docs/migration.md b/docs/migration.md index 1c934e6df..60ffbf074 100644 --- a/docs/migration.md +++ b/docs/migration.md @@ -23,3 +23,28 @@ separating the directory ignore from the file ignore. Document and thumbnail encryption is no longer supported. This was previously deprecated in [paperless-ng 0.9.3](https://github.com/paperless-ngx/paperless-ngx/blob/dev/docs/changelog.md#paperless-ng-093) Users must decrypt their document using the `decrypt_documents` command before upgrading. + +## Barcode Scanner Changes + +Support for [pyzbar](https://github.com/NaturalHistoryMuseum/pyzbar) has been removed. The underlying libzbar library has +seen no updates in 16 years and is largely unmaintained, and the pyzbar Python wrapper last saw a release in March 2022. In +practice, pyzbar struggled with barcode detection reliability, particularly on skewed, low-contrast, or partially +obscured barcodes. [zxing-cpp](https://github.com/zxing-cpp/zxing-cpp) is actively maintained, significantly more +reliable at finding barcodes, and now ships pre-built wheels for both x86_64 and arm64, removing the need to build the library. + +The `CONSUMER_BARCODE_SCANNER` setting has been removed. zxing-cpp is now the only backend. + +### Summary + +| Old Setting | New Setting | Notes | +| -------------------------- | ----------- | --------------------------------- | +| `CONSUMER_BARCODE_SCANNER` | _Removed_ | zxing-cpp is now the only backend | + +### Action Required + +- If you were already using `CONSUMER_BARCODE_SCANNER=ZXING`, simply remove the setting. +- If you had `CONSUMER_BARCODE_SCANNER=PYZBAR` or were using the default, no functional changes are needed beyond + removing the setting. zxing-cpp supports all the same barcode formats and you should see improved detection + reliability. +- The `libzbar0` / `libzbar-dev` system packages are no longer required and can be removed from any custom Docker + images or host installations. diff --git a/src/paperless/tests/test_checks.py b/src/paperless/tests/test_checks.py index 25bb07d22..fc6150826 100644 --- a/src/paperless/tests/test_checks.py +++ b/src/paperless/tests/test_checks.py @@ -187,26 +187,6 @@ class TestTimezoneSettingsChecks(DirectoriesMixin, TestCase): self.assertIn('Timezone "TheMoon\\MyCrater"', msg.msg) -class TestBarcodeSettingsChecks(DirectoriesMixin, TestCase): - @override_settings(CONSUMER_BARCODE_SCANNER="Invalid") - def test_barcode_scanner_invalid(self) -> None: - msgs = settings_values_check(None) - self.assertEqual(len(msgs), 1) - - msg = msgs[0] - - self.assertIn('Invalid Barcode Scanner "Invalid"', msg.msg) - - @override_settings(CONSUMER_BARCODE_SCANNER="") - def test_barcode_scanner_empty(self) -> None: - msgs = settings_values_check(None) - self.assertEqual(len(msgs), 1) - - msg = msgs[0] - - self.assertIn('Invalid Barcode Scanner ""', msg.msg) - - class TestEmailCertSettingsChecks(DirectoriesMixin, FileSystemAssertsMixin, TestCase): @override_settings(EMAIL_CERTIFICATE_FILE=Path("/tmp/not_actually_here.pem")) def test_not_valid_file(self) -> None: