{"id":15479,"name":"handprint","description":"Apply different text recognition services to images of handwritten documents.","url":"https://github.com/caltechlibrary/handprint","last_synced_at":"2025-09-04T22:49:42.339Z","repository":{"id":43225586,"uuid":"146203170","full_name":"caltechlibrary/handprint","owner":"caltechlibrary","description":"Apply different text recognition services to images of handwritten documents.","archived":false,"fork":false,"pushed_at":"2022-12-26T21:35:25.000Z","size":171942,"stargazers_count":183,"open_issues_count":17,"forks_count":18,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-08-31T13:52:54.947Z","etag":null,"topics":["amazon-rekognition","amazon-textract","google-api","google-cloud","google-vision-api","handwritten-text-recognition","htr","library-automation","machine-learning","microsoft-azure","ocr","optical-character-recognition","python"],"latest_commit_sha":null,"homepage":"https://caltechlibrary.github.io/handprint","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/caltechlibrary.png","metadata":{"files":{"readme":"README-PAPER.md","changelog":"CHANGES.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":"codemeta.json","zenodo":null}},"created_at":"2018-08-26T17:49:03.000Z","updated_at":"2025-06-17T22:45:05.000Z","dependencies_parsed_at":"2023-01-31T02:00:31.379Z","dependency_job_id":null,"html_url":"https://github.com/caltechlibrary/handprint","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/caltechlibrary/handprint","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caltechlibrary","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/sbom","scorecard":{"id":263219,"data":{"date":"2025-08-11","repo":{"name":"github.com/caltechlibrary/handprint","commit":"1b84db7eeb40dfaa5e4ced9b2cfdb021c1a1ba68"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build-sphinx.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.6.0 not signed: https://api.github.com/repos/caltechlibrary/handprint/releases/70543982","Warn: release artifact v1.5.6 not signed: https://api.github.com/repos/caltechlibrary/handprint/releases/61940364","Warn: release artifact v1.5.5 not signed: https://api.github.com/repos/caltechlibrary/handprint/releases/56488073","Warn: release artifact v1.5.4 not signed: https://api.github.com/repos/caltechlibrary/handprint/releases/48074286","Warn: release artifact v1.5.3 not signed: https://api.github.com/repos/caltechlibrary/handprint/releases/48017430","Warn: release artifact v1.6.0 does not have provenance: https://api.github.com/repos/caltechlibrary/handprint/releases/70543982","Warn: release artifact v1.5.6 does not have provenance: https://api.github.com/repos/caltechlibrary/handprint/releases/61940364","Warn: release artifact v1.5.5 does not have provenance: https://api.github.com/repos/caltechlibrary/handprint/releases/56488073","Warn: release artifact v1.5.4 does not have provenance: https://api.github.com/repos/caltechlibrary/handprint/releases/48074286","Warn: release artifact v1.5.3 does not have provenance: https://api.github.com/repos/caltechlibrary/handprint/releases/48017430"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-sphinx.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/caltechlibrary/handprint/build-sphinx.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-sphinx.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/caltechlibrary/handprint/build-sphinx.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-sphinx.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/caltechlibrary/handprint/build-sphinx.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-sphinx.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/caltechlibrary/handprint/build-sphinx.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/build-sphinx.yml:33","Warn: pipCommand not pinned by hash: .github/workflows/build-sphinx.yml:49","Warn: pipCommand not pinned by hash: .github/workflows/build-sphinx.yml:50","Warn: pipCommand not pinned by hash: .github/workflows/build-sphinx.yml:51","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   4 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":0,"reason":"31 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-230 / GHSA-248v-346w-9cwc","Warn: Project is vulnerable to: PYSEC-2022-42986 / GHSA-43fp-rhv2-5gv8","Warn: Project is vulnerable to: PYSEC-2023-135 / GHSA-xqr8-7jwr-rhp7","Warn: Project is vulnerable to: GHSA-496j-2rq6-j6cc","Warn: Project is vulnerable to: GHSA-6628-q6j9-w8vg","Warn: Project is vulnerable to: GHSA-9hxf-ppjv-w6rq","Warn: Project is vulnerable to: GHSA-cfgp-2977-2fmm","Warn: Project is vulnerable to: GHSA-vqfr-h8mv-ghfj","Warn: Project is vulnerable to: GHSA-h8pj-cxx2-jfg2","Warn: Project is vulnerable to: PYSEC-2024-60 / GHSA-jjg7-2v4v-x38h","Warn: Project is vulnerable to: GHSA-3f63-hfp8-52jq","Warn: Project is vulnerable to: GHSA-44wm-f244-xhp3","Warn: Project is vulnerable to: PYSEC-2023-227 / GHSA-8ghj-p4vj-mr35","Warn: Project is vulnerable to: GHSA-j7hp-h8jx-5ppr","Warn: Project is vulnerable to: PYSEC-2022-42979 / GHSA-m2vv-5vj5-2hm7","Warn: Project is vulnerable to: PYSEC-2023-175","Warn: Project is vulnerable to: GHSA-8gq9-2x98-w8hf","Warn: Project is vulnerable to: GHSA-8qvm-5x2c-j2w7","Warn: Project is vulnerable to: PYSEC-2022-42969","Warn: Project is vulnerable to: PYSEC-2023-117 / GHSA-mrwq-x4v8-fh7p","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: PYSEC-2023-212 / GHSA-g4mx-q9vg-27p4","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v","Warn: Project is vulnerable to: PYSEC-2023-192 / GHSA-v845-jxx5-vc9f","Warn: Project is vulnerable to: PYSEC-2022-43017 / GHSA-qwmp-2cf2-g9g6","Warn: Project is vulnerable to: PYSEC-2025-49 / GHSA-5rjg-fvgr-3xxf","Warn: Project is vulnerable to: GHSA-cx63-2mw6-8hw5","Warn: Project is vulnerable to: PYSEC-2022-43012 / GHSA-r9hx-vwmv-q579"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T11:19:00.434Z","repository_id":43225586,"created_at":"2025-08-17T11:19:00.434Z","updated_at":"2025-08-17T11:19:00.434Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273685592,"owners_count":25149721,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"caltechlibrary","name":"Caltech Library","uuid":"15038637","kind":"organization","description":"We manage the physical and digital holdings of the California Institute of Technology, provide services and training, and develop open-source software.","email":"helpdesk@library.caltech.edu","website":"https://www.library.caltech.edu/","location":"Pasadena, CA 91125","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/15038637?v=4","repositories_count":84,"last_synced_at":"2023-03-05T09:38:54.139Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/caltechlibrary","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-15T11:28:02.624Z","updated_at":"2023-03-05T09:38:54.188Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caltechlibrary","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caltechlibrary/repositories"},"packages":[{"id":10586966,"name":"github.com/caltechlibrary/handprint","ecosystem":"go","description":null,"homepage":null,"licenses":"bsd-3-clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/caltechlibrary/handprint","keywords_array":[],"namespace":null,"versions_count":18,"first_release_published_at":"2019-08-21T00:50:15.000Z","latest_release_published_at":"2022-06-25T02:12:25.000Z","latest_release_number":"v1.6.0","last_synced_at":"2025-08-26T16:34:52.727Z","created_at":"2024-07-09T05:14:34.332Z","updated_at":"2025-08-26T16:34:52.727Z","registry_url":"https://pkg.go.dev/github.com/caltechlibrary/handprint","install_command":"go get github.com/caltechlibrary/handprint","documentation_url":"https://pkg.go.dev/github.com/caltechlibrary/handprint#section-documentation","metadata":{},"repo_metadata":{"id":43225586,"uuid":"146203170","full_name":"caltechlibrary/handprint","owner":"caltechlibrary","description":"Apply different text recognition services to images of handwritten documents.","archived":false,"fork":false,"pushed_at":"2022-12-26T21:35:25.000Z","size":171942,"stargazers_count":160,"open_issues_count":17,"forks_count":17,"subscribers_count":12,"default_branch":"main","last_synced_at":"2024-04-29T00:11:01.704Z","etag":null,"topics":["amazon-rekognition","amazon-textract","google-api","google-cloud","google-vision-api","handwritten-text-recognition","htr","library-automation","machine-learning","microsoft-azure","ocr","optical-character-recognition","python"],"latest_commit_sha":null,"homepage":"https://caltechlibrary.github.io/handprint","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/caltechlibrary.png","metadata":{"files":{"readme":"README-PAPER.md","changelog":"CHANGES.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null}},"created_at":"2018-08-26T17:49:03.000Z","updated_at":"2024-04-27T13:26:28.000Z","dependencies_parsed_at":"2023-01-31T02:00:31.379Z","dependency_job_id":null,"html_url":"https://github.com/caltechlibrary/handprint","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caltechlibrary","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":210105206,"owners_count":15103009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"repo_metadata_updated_at":"2024-07-09T08:37:51.011Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":6.838215878093679,"dependent_packages_count":6.405742059626554,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":6.621978968860116},"purl":"pkg:golang/github.com/caltechlibrary/handprint","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/caltechlibrary/handprint","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/caltechlibrary/handprint","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/caltechlibrary/handprint/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-07-01T03:27:25.158Z","issues_count":39,"pull_requests_count":9,"avg_time_to_close_issue":4821368.0,"avg_time_to_close_pull_request":2586167.0,"issues_closed_count":26,"pull_requests_closed_count":5,"pull_request_authors_count":1,"issue_authors_count":13,"avg_comments_per_issue":0.9743589743589743,"avg_comments_per_pull_request":0.1111111111111111,"merged_pull_requests_count":5,"bot_issues_count":0,"bot_pull_requests_count":9,"past_year_issues_count":1,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/issues","maintainers":[{"login":"mhucka","count":25,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mhucka"},{"login":"tmorrell","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tmorrell"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fcaltechlibrary%2Fhandprint/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fcaltechlibrary%2Fhandprint/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fcaltechlibrary%2Fhandprint/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fcaltechlibrary%2Fhandprint/related_packages","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":1951493,"maintainers_count":0,"namespaces_count":741113,"keywords_count":109139,"github":"golang","metadata":{"funded_packages_count":48962},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2025-09-04T05:53:31.480Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":2755755,"name":"handprint","ecosystem":"pypi","description":"Run handwritten text recognition services on images of documents","homepage":"https://github.com/caltechlibrary/handprint","licenses":"BSD 3-clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/caltechlibrary/handprint","keywords_array":["HTR","OCR","handwritten text recognition","machine learning"],"namespace":null,"versions_count":15,"first_release_published_at":"2019-08-21T01:14:04.000Z","latest_release_published_at":"2022-06-25T02:20:29.000Z","latest_release_number":"1.6.0","last_synced_at":"2025-08-28T04:03:27.363Z","created_at":"2022-04-10T11:13:06.366Z","updated_at":"2025-08-28T04:08:17.661Z","registry_url":"https://pypi.org/project/handprint/","install_command":"pip install handprint --index-url https://pypi.org/simple","documentation_url":"https://handprint.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 5 - Production/Stable","Environment :: Console","Intended Audience :: Science/Research","License :: OSI Approved :: BSD License","Operating System :: MacOS :: MacOS X","Operating System :: Microsoft :: Windows","Operating System :: POSIX","Operating System :: POSIX :: Linux","Operating System :: Unix","Programming Language :: Python","Programming Language :: Python :: 3.8","Topic :: Scientific/Engineering :: Artificial Intelligence","Topic :: Scientific/Engineering :: Image Recognition","Topic :: Text Processing :: Linguistic"],"normalized_name":"handprint","project_status":null},"repo_metadata":{"id":43225586,"uuid":"146203170","full_name":"caltechlibrary/handprint","owner":"caltechlibrary","description":"Apply different text recognition services to images of handwritten documents.","archived":false,"fork":false,"pushed_at":"2022-12-26T21:35:25.000Z","size":171942,"stargazers_count":183,"open_issues_count":17,"forks_count":18,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-08-23T04:11:45.170Z","etag":null,"topics":["amazon-rekognition","amazon-textract","google-api","google-cloud","google-vision-api","handwritten-text-recognition","htr","library-automation","machine-learning","microsoft-azure","ocr","optical-character-recognition","python"],"latest_commit_sha":null,"homepage":"https://caltechlibrary.github.io/handprint","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/caltechlibrary.png","metadata":{"files":{"readme":"README-PAPER.md","changelog":"CHANGES.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":"codemeta.json","zenodo":null}},"created_at":"2018-08-26T17:49:03.000Z","updated_at":"2025-06-17T22:45:05.000Z","dependencies_parsed_at":"2023-01-31T02:00:31.379Z","dependency_job_id":null,"html_url":"https://github.com/caltechlibrary/handprint","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/caltechlibrary/handprint","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caltechlibrary","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/sbom","scorecard":{"id":263219,"data":{"date":"2025-08-11","repo":{"name":"github.com/caltechlibrary/handprint","commit":"1b84db7eeb40dfaa5e4ced9b2cfdb021c1a1ba68"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build-sphinx.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.6.0 not signed: https://api.github.com/repos/caltechlibrary/handprint/releases/70543982","Warn: release artifact v1.5.6 not signed: https://api.github.com/repos/caltechlibrary/handprint/releases/61940364","Warn: release artifact v1.5.5 not signed: https://api.github.com/repos/caltechlibrary/handprint/releases/56488073","Warn: release artifact v1.5.4 not signed: https://api.github.com/repos/caltechlibrary/handprint/releases/48074286","Warn: release artifact v1.5.3 not signed: https://api.github.com/repos/caltechlibrary/handprint/releases/48017430","Warn: release artifact v1.6.0 does not have provenance: https://api.github.com/repos/caltechlibrary/handprint/releases/70543982","Warn: release artifact v1.5.6 does not have provenance: https://api.github.com/repos/caltechlibrary/handprint/releases/61940364","Warn: release artifact v1.5.5 does not have provenance: https://api.github.com/repos/caltechlibrary/handprint/releases/56488073","Warn: release artifact v1.5.4 does not have provenance: https://api.github.com/repos/caltechlibrary/handprint/releases/48074286","Warn: release artifact v1.5.3 does not have provenance: https://api.github.com/repos/caltechlibrary/handprint/releases/48017430"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-sphinx.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/caltechlibrary/handprint/build-sphinx.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-sphinx.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/caltechlibrary/handprint/build-sphinx.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-sphinx.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/caltechlibrary/handprint/build-sphinx.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-sphinx.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/caltechlibrary/handprint/build-sphinx.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/build-sphinx.yml:33","Warn: pipCommand not pinned by hash: .github/workflows/build-sphinx.yml:49","Warn: pipCommand not pinned by hash: .github/workflows/build-sphinx.yml:50","Warn: pipCommand not pinned by hash: .github/workflows/build-sphinx.yml:51","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   4 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":0,"reason":"31 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-230 / GHSA-248v-346w-9cwc","Warn: Project is vulnerable to: PYSEC-2022-42986 / GHSA-43fp-rhv2-5gv8","Warn: Project is vulnerable to: PYSEC-2023-135 / GHSA-xqr8-7jwr-rhp7","Warn: Project is vulnerable to: GHSA-496j-2rq6-j6cc","Warn: Project is vulnerable to: GHSA-6628-q6j9-w8vg","Warn: Project is vulnerable to: GHSA-9hxf-ppjv-w6rq","Warn: Project is vulnerable to: GHSA-cfgp-2977-2fmm","Warn: Project is vulnerable to: GHSA-vqfr-h8mv-ghfj","Warn: Project is vulnerable to: GHSA-h8pj-cxx2-jfg2","Warn: Project is vulnerable to: PYSEC-2024-60 / GHSA-jjg7-2v4v-x38h","Warn: Project is vulnerable to: GHSA-3f63-hfp8-52jq","Warn: Project is vulnerable to: GHSA-44wm-f244-xhp3","Warn: Project is vulnerable to: PYSEC-2023-227 / GHSA-8ghj-p4vj-mr35","Warn: Project is vulnerable to: GHSA-j7hp-h8jx-5ppr","Warn: Project is vulnerable to: PYSEC-2022-42979 / GHSA-m2vv-5vj5-2hm7","Warn: Project is vulnerable to: PYSEC-2023-175","Warn: Project is vulnerable to: GHSA-8gq9-2x98-w8hf","Warn: Project is vulnerable to: GHSA-8qvm-5x2c-j2w7","Warn: Project is vulnerable to: PYSEC-2022-42969","Warn: Project is vulnerable to: PYSEC-2023-117 / GHSA-mrwq-x4v8-fh7p","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: PYSEC-2023-212 / GHSA-g4mx-q9vg-27p4","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v","Warn: Project is vulnerable to: PYSEC-2023-192 / GHSA-v845-jxx5-vc9f","Warn: Project is vulnerable to: PYSEC-2022-43017 / GHSA-qwmp-2cf2-g9g6","Warn: Project is vulnerable to: PYSEC-2025-49 / GHSA-5rjg-fvgr-3xxf","Warn: Project is vulnerable to: GHSA-cx63-2mw6-8hw5","Warn: Project is vulnerable to: PYSEC-2022-43012 / GHSA-r9hx-vwmv-q579"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T11:19:00.434Z","repository_id":43225586,"created_at":"2025-08-17T11:19:00.434Z","updated_at":"2025-08-17T11:19:00.434Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272434374,"owners_count":24934406,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-28T02:00:10.768Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"caltechlibrary","name":"Caltech Library","uuid":"15038637","kind":"organization","description":"We manage the physical and digital holdings of the California Institute of Technology, provide services and training, and develop open-source software.","email":"helpdesk@library.caltech.edu","website":"https://www.library.caltech.edu/","location":"Pasadena, CA 91125","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/15038637?v=4","repositories_count":84,"last_synced_at":"2023-03-05T09:38:54.139Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/caltechlibrary","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-15T11:28:02.624Z","updated_at":"2023-03-05T09:38:54.188Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caltechlibrary","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caltechlibrary/repositories"},"tags":[{"name":"v1.6.0","sha":"2068178c62b785d1751353ad5a035e01e7a11493","kind":"commit","published_at":"2022-06-25T02:12:25.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.6.0","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.6.0/manifests"},{"name":"v1.5.6","sha":"6ae66dd08bdec6122c01083b1ab9aba2d09b9e31","kind":"commit","published_at":"2022-03-15T22:38:18.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.5.6","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.5.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.5.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.5.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.5.6/manifests"},{"name":"v1.5.5","sha":"0f1f84bf201b0b64275fefdabe3329244e7239d9","kind":"commit","published_at":"2022-01-05T19:44:11.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.5.5","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.5.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.5.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.5.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.5.5/manifests"},{"name":"v1.5.4","sha":"909368566028a54297cdce68ce1303d21a992342","kind":"commit","published_at":"2021-08-18T21:21:35.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.5.4","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.5.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.5.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.5.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.5.4/manifests"},{"name":"v1.5.3","sha":"6535e5e3a68ddfdcdd3f9064dda8949a52b512da","kind":"commit","published_at":"2021-08-18T04:05:47.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.5.3","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.5.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.5.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.5.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.5.3/manifests"},{"name":"v1.5.2","sha":"75fa4fa8c68768378b9b580511a44d63e0c3c1ec","kind":"commit","published_at":"2021-08-18T02:58:52.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.5.2","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.5.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.5.2/manifests"},{"name":"v1.5.1","sha":"b38f7a282bf653266bb4e47de69b7f18261457a9","kind":"commit","published_at":"2021-06-29T20:35:45.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.5.1","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.5.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.5.1/manifests"},{"name":"v1.5.0","sha":"96820ae2a1cb5d2e8b86009ca249457f4c863253","kind":"commit","published_at":"2021-06-22T03:47:16.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.5.0","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.5.0/manifests"},{"name":"v1.4.0","sha":"733cb92e7347276b0d07ed39b8a61cb62df1b377","kind":"commit","published_at":"2020-11-14T03:45:05.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.4.0","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.4.0/manifests"},{"name":"v1.3.0","sha":"8f4e501a7e5bef1daa1fe47ed7e42fe49e63bf08","kind":"commit","published_at":"2020-11-11T19:55:30.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.3.0","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.3.0/manifests"},{"name":"v1.2.2","sha":"201139ff45460a16e22af82fbaff259dfe6338d3","kind":"tag","published_at":"2020-02-20T23:56:04.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.2.2","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.2.2/manifests"},{"name":"v1.2.1","sha":"0c57654c4940ffbdd831ecf4929cffe532285f96","kind":"tag","published_at":"2020-02-20T23:31:31.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.2.1","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"d9646cb12317ec77dc0c2a215c63ef79d7043ac9","kind":"tag","published_at":"2020-01-07T21:54:05.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.2.0","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.2.0/manifests"},{"name":"v1.1.0","sha":"2164eddc910e1dfa57591a14c47c4b0a526e3ba6","kind":"tag","published_at":"2019-12-24T03:16:45.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.1.0","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.1.0/manifests"},{"name":"v1.0.3","sha":"fda3ab8cfcdaa684adf0686929ecdf57764ea09f","kind":"tag","published_at":"2019-12-11T02:20:03.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.0.3","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.0.3/manifests"},{"name":"v1.0.2","sha":"ec2b590f68265360a48e3f0781467fbc4d5d4f2c","kind":"tag","published_at":"2019-12-11T01:56:33.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.0.2","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"0ec2a0de09e34f4185c41d38ed73af06e6bd1743","kind":"tag","published_at":"2019-08-21T02:23:40.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.0.1","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"187ddc47d04ab0d61694977c2474cc01e8f4529d","kind":"tag","published_at":"2019-08-21T00:51:52.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/v1.0.0","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/v1.0.0/manifests"},{"name":"0.10.0","sha":"3472e41bf136bea196bac1d2386b8f4f2ec10e32","kind":"commit","published_at":"2019-07-23T23:35:30.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/0.10.0","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@0.10.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/0.10.0/manifests"},{"name":"0.8.1","sha":"8accac9707b4a96633943ce04c75115814c86db4","kind":"commit","published_at":"2018-11-13T03:08:34.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/0.8.1","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/0.8.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@0.8.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/0.8.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/0.8.1/manifests"},{"name":"0.8.0","sha":"8f03d95139caf60ef6ba70db05254165ca7f77f2","kind":"commit","published_at":"2018-11-09T04:37:10.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/0.8.0","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@0.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/0.8.0/manifests"},{"name":"0.7.5","sha":"0a3f675a4b7df7ec92fde6c8332749e22621f19d","kind":"commit","published_at":"2018-11-08T19:19:58.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/0.7.5","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/0.7.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@0.7.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/0.7.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/0.7.5/manifests"},{"name":"0.7.3","sha":"2847505dee3462d85510405f4f914347c89b275d","kind":"commit","published_at":"2018-11-07T22:40:21.000Z","download_url":"https://codeload.github.com/caltechlibrary/handprint/tar.gz/0.7.3","html_url":"https://github.com/caltechlibrary/handprint/releases/tag/0.7.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/caltechlibrary/handprint@0.7.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/0.7.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/tags/0.7.3/manifests"}]},"repo_metadata_updated_at":"2025-08-28T04:08:17.660Z","dependent_packages_count":0,"downloads":165,"downloads_period":"last-month","dependent_repos_count":2,"rankings":{"downloads":18.16023211862296,"dependent_repos_count":11.679463609819402,"dependent_packages_count":9.813334981248527,"stargazers_count":5.779574305363768,"forks_count":9.12648160302691,"docker_downloads_count":2.5628848863921543,"average":9.520328584078953},"purl":"pkg:pypi/handprint","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/handprint","docker_dependents_count":1,"docker_downloads_count":160,"usage_url":"https://repos.ecosyste.ms/usage/pypi/handprint","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/handprint/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-06-24T03:44:43.292Z","issues_count":39,"pull_requests_count":9,"avg_time_to_close_issue":4821368.0,"avg_time_to_close_pull_request":2586167.0,"issues_closed_count":26,"pull_requests_closed_count":5,"pull_request_authors_count":1,"issue_authors_count":13,"avg_comments_per_issue":0.9743589743589743,"avg_comments_per_pull_request":0.1111111111111111,"merged_pull_requests_count":5,"bot_issues_count":0,"bot_pull_requests_count":9,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/issues","maintainers":[{"login":"mhucka","count":25,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mhucka"},{"login":"tmorrell","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tmorrell"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/handprint/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/handprint/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/handprint/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/handprint/related_packages","maintainers":[{"uuid":"mhucka","login":"mhucka","name":null,"email":null,"url":null,"packages_count":21,"html_url":"https://pypi.org/user/mhucka/","role":null,"created_at":"2023-02-24T09:20:34.777Z","updated_at":"2023-02-24T09:20:34.777Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/mhucka/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":724922,"maintainers_count":308248,"namespaces_count":0,"keywords_count":237984,"github":"pypi","metadata":{"funded_packages_count":50481},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-09-04T05:23:51.177Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}}],"commits":{"id":591102,"full_name":"caltechlibrary/handprint","default_branch":"main","committers":[{"name":"Michael Hucka","email":"mhucka@caltech.edu","login":"mhucka","count":853},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":5}],"total_commits":858,"total_committers":2,"total_bot_commits":5,"total_bot_committers":1,"mean_commits":429.0,"dds":0.005827505827505797,"past_year_committers":[],"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2025-05-24T11:14:11.392Z","last_synced_commit":"1b84db7eeb40dfaa5e4ced9b2cfdb021c1a1ba68","created_at":"2023-03-09T06:20:58.688Z","updated_at":"2025-05-24T11:14:11.393Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-04T00:00:25.936Z","repositories_count":5480019,"commits_count":853389012,"contributors_count":31098138,"owners_count":906558,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"caltechlibrary/handprint","html_url":"https://github.com/caltechlibrary/handprint","last_synced_at":"2025-08-28T04:08:57.469Z","status":"error","issues_count":39,"pull_requests_count":9,"avg_time_to_close_issue":4821368.0,"avg_time_to_close_pull_request":2586167.0,"issues_closed_count":26,"pull_requests_closed_count":5,"pull_request_authors_count":1,"issue_authors_count":13,"avg_comments_per_issue":0.9743589743589743,"avg_comments_per_pull_request":0.1111111111111111,"merged_pull_requests_count":5,"bot_issues_count":0,"bot_pull_requests_count":9,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2023-05-14T15:17:58.392Z","updated_at":"2025-09-01T11:46:10.782Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/caltechlibrary%2Fhandprint/issues","issue_labels_count":{"Enhancement ✨":12,"Bug 🐛":12,"Priority ★★★":2,"Task: docs 📜":2,"Priority ★★":1,"Status: help wanted 👋🏽":1,"Task: chore 📥":1},"pull_request_labels_count":{"dependencies":9},"issue_author_associations_count":{"MEMBER":26,"NONE":13},"pull_request_author_associations_count":{"CONTRIBUTOR":9},"issue_authors":{"mhucka":25,"rlskoeser":2,"step21":2,"syed-9909":1,"Duxmir":1,"richlysakowski":1,"tuxflo":1,"Nestak2":1,"TommasoBendinelli":1,"criley10":1,"tmorrell":1,"braytac":1,"DestoGit":1},"pull_request_authors":{"dependabot[bot]":9},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-04T00:00:25.939Z","repositories_count":10078753,"issues_count":31296568,"pull_requests_count":96036466,"authors_count":10692505,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[{"login":"mhucka","count":25,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mhucka"},{"login":"tmorrell","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tmorrell"}],"active_maintainers":[]},"events":{"total":{"WatchEvent":12,"IssueCommentEvent":1,"ForkEvent":1,"CommitCommentEvent":1},"last_year":{"WatchEvent":12,"IssueCommentEvent":1,"ForkEvent":1,"CommitCommentEvent":1}},"keywords":["amazon-rekognition","amazon-textract","google-api","google-cloud","google-vision-api","handwritten-text-recognition","htr","library-automation","machine-learning","microsoft-azure","ocr","optical-character-recognition","python"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/build-sphinx.yml","sha":null,"kind":"manifest","created_at":"2023-01-31T02:00:31.293Z","updated_at":"2023-01-31T02:00:31.293Z","repository_link":"https://github.com/caltechlibrary/handprint/blob/main/.github/workflows/build-sphinx.yml","dependencies":[{"id":7260817448,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7260817449,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7260817450,"package_name":"actions/cache","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7260817451,"package_name":"peaceiris/actions-gh-pages","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"Pipfile","sha":null,"kind":"manifest","created_at":"2023-01-31T02:00:31.334Z","updated_at":"2023-01-31T02:00:31.334Z","repository_link":"https://github.com/caltechlibrary/handprint/blob/main/Pipfile","dependencies":[{"id":7260817468,"package_name":"aenum","ecosystem":"pypi","requirements":"==3.1.0","direct":true,"kind":"runtime","optional":false},{"id":7260817469,"package_name":"appdirs","ecosystem":"pypi","requirements":"==1.4.4","direct":true,"kind":"runtime","optional":false},{"id":7260817470,"package_name":"boltons","ecosystem":"pypi","requirements":"==21.0.0","direct":true,"kind":"runtime","optional":false},{"id":7260817471,"package_name":"boto3","ecosystem":"pypi","requirements":"==1.17.91","direct":true,"kind":"runtime","optional":false},{"id":7260817472,"package_name":"bun","ecosystem":"pypi","requirements":"==0.0.7","direct":true,"kind":"runtime","optional":false},{"id":7260817474,"package_name":"commonpy","ecosystem":"pypi","requirements":"\u003e=1.9.0","direct":true,"kind":"runtime","optional":false},{"id":7260817475,"package_name":"fastnumbers","ecosystem":"pypi","requirements":"==3.1.0","direct":true,"kind":"runtime","optional":false},{"id":7260817476,"package_name":"google-api-core","ecosystem":"pypi","requirements":"==1.30.0","direct":true,"kind":"runtime","optional":false},{"id":7260817477,"package_name":"google-api-python-client","ecosystem":"pypi","requirements":"==2.8.0","direct":true,"kind":"runtime","optional":false},{"id":7260817478,"package_name":"google-auth","ecosystem":"pypi","requirements":"==1.30.2","direct":true,"kind":"runtime","optional":false},{"id":7260817479,"package_name":"google-auth-httplib2","ecosystem":"pypi","requirements":"==0.1.0","direct":true,"kind":"runtime","optional":false},{"id":7260817480,"package_name":"google-cloud","ecosystem":"pypi","requirements":"==0.34.0","direct":true,"kind":"runtime","optional":false},{"id":7260817481,"package_name":"google-cloud-vision","ecosystem":"pypi","requirements":"==2.3.1","direct":true,"kind":"runtime","optional":false},{"id":7260817482,"package_name":"googleapis-common-protos","ecosystem":"pypi","requirements":"==1.53.0","direct":true,"kind":"runtime","optional":false},{"id":7260817483,"package_name":"grpcio","ecosystem":"pypi","requirements":"==1.38.0","direct":true,"kind":"runtime","optional":false},{"id":7260817484,"package_name":"humanize","ecosystem":"pypi","requirements":"\u003e=3.7.1","direct":true,"kind":"runtime","optional":false},{"id":7260817485,"package_name":"imagesize","ecosystem":"pypi","requirements":"==1.2.0","direct":true,"kind":"runtime","optional":false},{"id":7260817486,"package_name":"matplotlib","ecosystem":"pypi","requirements":"==3.4.2","direct":true,"kind":"runtime","optional":false},{"id":7260817487,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.22.2","direct":true,"kind":"runtime","optional":false},{"id":7260817488,"package_name":"plac","ecosystem":"pypi","requirements":"==1.3.3","direct":true,"kind":"runtime","optional":false},{"id":7260817489,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.8.0","direct":true,"kind":"runtime","optional":false},{"id":7260817490,"package_name":"requests","ecosystem":"pypi","requirements":"==2.25.0","direct":true,"kind":"runtime","optional":false},{"id":7260817491,"package_name":"rich","ecosystem":"pypi","requirements":"==10.1.0","direct":true,"kind":"runtime","optional":false},{"id":7260817492,"package_name":"sidetrack","ecosystem":"pypi","requirements":"==2.0.0","direct":true,"kind":"runtime","optional":false},{"id":7260817493,"package_name":"textdistance","ecosystem":"pypi","requirements":"==4.2.2","direct":true,"kind":"runtime","optional":false},{"id":7260817498,"package_name":"urllib3","ecosystem":"pypi","requirements":"==1.26.5","direct":true,"kind":"runtime","optional":false},{"id":7260817499,"package_name":"validator-collection","ecosystem":"pypi","requirements":"==1.5.0","direct":true,"kind":"runtime","optional":false},{"id":7260817500,"package_name":"Pillow","ecosystem":"pypi","requirements":"==9.0.1","direct":true,"kind":"runtime","optional":false},{"id":7260817501,"package_name":"PyMuPDF","ecosystem":"pypi","requirements":"==1.19.6","direct":true,"kind":"runtime","optional":false},{"id":7260817502,"package_name":"StringDist","ecosystem":"pypi","requirements":"==1.0.9","direct":true,"kind":"runtime","optional":false},{"id":7260817503,"package_name":"pytest-mock","ecosystem":"pypi","requirements":"==3.7.0","direct":true,"kind":"develop","optional":false}]},{"ecosystem":"pypi","filepath":"Pipfile.lock","sha":null,"kind":"lockfile","created_at":"2023-01-31T02:00:31.355Z","updated_at":"2023-01-31T02:00:31.355Z","repository_link":"https://github.com/caltechlibrary/handprint/blob/main/Pipfile.lock","dependencies":[{"id":7260817504,"package_name":"aenum","ecosystem":"pypi","requirements":"==3.1.0","direct":false,"kind":"runtime","optional":false},{"id":7260817505,"package_name":"anyio","ecosystem":"pypi","requirements":"==3.5.0","direct":false,"kind":"runtime","optional":false},{"id":7260817506,"package_name":"appdirs","ecosystem":"pypi","requirements":"==1.4.4","direct":false,"kind":"runtime","optional":false},{"id":7260817507,"package_name":"attrs","ecosystem":"pypi","requirements":"==21.4.0","direct":false,"kind":"runtime","optional":false},{"id":7260817508,"package_name":"boltons","ecosystem":"pypi","requirements":"==21.0.0","direct":false,"kind":"runtime","optional":false},{"id":7260817509,"package_name":"boto3","ecosystem":"pypi","requirements":"==1.17.91","direct":false,"kind":"runtime","optional":false},{"id":7260817510,"package_name":"botocore","ecosystem":"pypi","requirements":"==1.20.112","direct":false,"kind":"runtime","optional":false},{"id":7260817511,"package_name":"bun","ecosystem":"pypi","requirements":"==0.0.7","direct":false,"kind":"runtime","optional":false},{"id":7260817512,"package_name":"cachetools","ecosystem":"pypi","requirements":"==4.2.4","direct":false,"kind":"runtime","optional":false},{"id":7260817513,"package_name":"certifi","ecosystem":"pypi","requirements":"==2021.10.8","direct":false,"kind":"runtime","optional":false},{"id":7260817514,"package_name":"chardet","ecosystem":"pypi","requirements":"==3.0.4","direct":false,"kind":"runtime","optional":false},{"id":7260817515,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"==2.0.12","direct":false,"kind":"runtime","optional":false},{"id":7260817516,"package_name":"colorama","ecosystem":"pypi","requirements":"==0.4.4","direct":false,"kind":"runtime","optional":false},{"id":7260817517,"package_name":"commonmark","ecosystem":"pypi","requirements":"==0.9.1","direct":false,"kind":"runtime","optional":false},{"id":7260817518,"package_name":"commonpy","ecosystem":"pypi","requirements":"==1.9.1","direct":false,"kind":"runtime","optional":false},{"id":7260817519,"package_name":"cycler","ecosystem":"pypi","requirements":"==0.11.0","direct":false,"kind":"runtime","optional":false},{"id":7260817520,"package_name":"dateparser","ecosystem":"pypi","requirements":"==1.0.0","direct":false,"kind":"runtime","optional":false},{"id":7260817521,"package_name":"deprecation","ecosystem":"pypi","requirements":"==2.1.0","direct":false,"kind":"runtime","optional":false},{"id":7260817522,"package_name":"fastnumbers","ecosystem":"pypi","requirements":"==3.1.0","direct":false,"kind":"runtime","optional":false},{"id":7260817523,"package_name":"filelock","ecosystem":"pypi","requirements":"==3.6.0","direct":false,"kind":"runtime","optional":false},{"id":7260817524,"package_name":"google-api-core","ecosystem":"pypi","requirements":"==1.30.0","direct":false,"kind":"runtime","optional":false},{"id":7260817525,"package_name":"google-api-python-client","ecosystem":"pypi","requirements":"==2.8.0","direct":false,"kind":"runtime","optional":false},{"id":7260817526,"package_name":"google-auth","ecosystem":"pypi","requirements":"==1.30.2","direct":false,"kind":"runtime","optional":false},{"id":7260817527,"package_name":"google-auth-httplib2","ecosystem":"pypi","requirements":"==0.1.0","direct":false,"kind":"runtime","optional":false},{"id":7260817528,"package_name":"google-cloud","ecosystem":"pypi","requirements":"==0.34.0","direct":false,"kind":"runtime","optional":false},{"id":7260817529,"package_name":"google-cloud-vision","ecosystem":"pypi","requirements":"==2.3.1","direct":false,"kind":"runtime","optional":false},{"id":7260817530,"package_name":"googleapis-common-protos","ecosystem":"pypi","requirements":"==1.53.0","direct":false,"kind":"runtime","optional":false},{"id":7260817531,"package_name":"grpcio","ecosystem":"pypi","requirements":"==1.38.0","direct":false,"kind":"runtime","optional":false},{"id":7260817532,"package_name":"h11","ecosystem":"pypi","requirements":"==0.12.0","direct":false,"kind":"runtime","optional":false},{"id":7260817533,"package_name":"h2","ecosystem":"pypi","requirements":"==3.2.0","direct":false,"kind":"runtime","optional":false},{"id":7260817534,"package_name":"hpack","ecosystem":"pypi","requirements":"==3.0.0","direct":false,"kind":"runtime","optional":false},{"id":7260817535,"package_name":"httpcore","ecosystem":"pypi","requirements":"==0.14.7","direct":false,"kind":"runtime","optional":false},{"id":7260817536,"package_name":"httplib2","ecosystem":"pypi","requirements":"==0.20.4","direct":false,"kind":"runtime","optional":false},{"id":7260817537,"package_name":"httpx","ecosystem":"pypi","requirements":"==0.21.1","direct":false,"kind":"runtime","optional":false},{"id":7260817538,"package_name":"humanize","ecosystem":"pypi","requirements":"==4.0.0","direct":false,"kind":"runtime","optional":false},{"id":7260817539,"package_name":"hyperframe","ecosystem":"pypi","requirements":"==5.2.0","direct":false,"kind":"runtime","optional":false},{"id":7260817540,"package_name":"idna","ecosystem":"pypi","requirements":"==2.10","direct":false,"kind":"runtime","optional":false},{"id":7260817541,"package_name":"imagesize","ecosystem":"pypi","requirements":"==1.2.0","direct":false,"kind":"runtime","optional":false},{"id":7260817542,"package_name":"iniconfig","ecosystem":"pypi","requirements":"==1.1.1","direct":false,"kind":"runtime","optional":false},{"id":7260817543,"package_name":"jmespath","ecosystem":"pypi","requirements":"==0.10.0","direct":false,"kind":"runtime","optional":false},{"id":7260817544,"package_name":"jsonschema","ecosystem":"pypi","requirements":"==4.4.0","direct":false,"kind":"runtime","optional":false},{"id":7260817545,"package_name":"kiwisolver","ecosystem":"pypi","requirements":"==1.4.0","direct":false,"kind":"runtime","optional":false},{"id":7260817546,"package_name":"matplotlib","ecosystem":"pypi","requirements":"==3.4.2","direct":false,"kind":"runtime","optional":false},{"id":7260817547,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.22.2","direct":false,"kind":"runtime","optional":false},{"id":7260817548,"package_name":"packaging","ecosystem":"pypi","requirements":"==21.3","direct":false,"kind":"runtime","optional":false},{"id":7260817549,"package_name":"pillow","ecosystem":"pypi","requirements":"==9.0.1","direct":false,"kind":"runtime","optional":false},{"id":7260817550,"package_name":"plac","ecosystem":"pypi","requirements":"==1.3.3","direct":false,"kind":"runtime","optional":false},{"id":7260817551,"package_name":"pluggy","ecosystem":"pypi","requirements":"==1.0.0","direct":false,"kind":"runtime","optional":false},{"id":7260817552,"package_name":"proto-plus","ecosystem":"pypi","requirements":"==1.20.3","direct":false,"kind":"runtime","optional":false},{"id":7260817553,"package_name":"protobuf","ecosystem":"pypi","requirements":"==3.19.4","direct":false,"kind":"runtime","optional":false},{"id":7260817554,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.8.0","direct":false,"kind":"runtime","optional":false},{"id":7260817555,"package_name":"py","ecosystem":"pypi","requirements":"==1.11.0","direct":false,"kind":"runtime","optional":false},{"id":7260817556,"package_name":"pyasn1","ecosystem":"pypi","requirements":"==0.4.8","direct":false,"kind":"runtime","optional":false},{"id":7260817557,"package_name":"pyasn1-modules","ecosystem":"pypi","requirements":"==0.2.8","direct":false,"kind":"runtime","optional":false},{"id":7260817558,"package_name":"pygments","ecosystem":"pypi","requirements":"==2.11.2","direct":false,"kind":"runtime","optional":false},{"id":7260817559,"package_name":"pymupdf","ecosystem":"pypi","requirements":"==1.19.6","direct":false,"kind":"runtime","optional":false},{"id":7260817560,"package_name":"pyparsing","ecosystem":"pypi","requirements":"==3.0.7","direct":false,"kind":"runtime","optional":false},{"id":7260817561,"package_name":"pyrsistent","ecosystem":"pypi","requirements":"==0.18.1","direct":false,"kind":"runtime","optional":false},{"id":7260817562,"package_name":"pytest","ecosystem":"pypi","requirements":"==7.1.0","direct":false,"kind":"runtime","optional":false},{"id":7260817563,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"==2.8.2","direct":false,"kind":"runtime","optional":false},{"id":7260817564,"package_name":"pytz","ecosystem":"pypi","requirements":"==2021.3","direct":false,"kind":"runtime","optional":false},{"id":7260817565,"package_name":"pytz-deprecation-shim","ecosystem":"pypi","requirements":"==0.1.0.post0","direct":false,"kind":"runtime","optional":false},{"id":7260817566,"package_name":"pyyaml","ecosystem":"pypi","requirements":"==6.0","direct":false,"kind":"runtime","optional":false},{"id":7260817567,"package_name":"regex","ecosystem":"pypi","requirements":"==2022.3.2","direct":false,"kind":"runtime","optional":false},{"id":7260817568,"package_name":"requests","ecosystem":"pypi","requirements":"==2.25.0","direct":false,"kind":"runtime","optional":false},{"id":7260817569,"package_name":"requests-file","ecosystem":"pypi","requirements":"==1.5.1","direct":false,"kind":"runtime","optional":false},{"id":7260817570,"package_name":"rfc3986","ecosystem":"pypi","requirements":"==1.5.0","direct":false,"kind":"runtime","optional":false},{"id":7260817571,"package_name":"rich","ecosystem":"pypi","requirements":"==10.1.0","direct":false,"kind":"runtime","optional":false},{"id":7260817572,"package_name":"rsa","ecosystem":"pypi","requirements":"==4.8","direct":false,"kind":"runtime","optional":false},{"id":7260817573,"package_name":"s3transfer","ecosystem":"pypi","requirements":"==0.4.2","direct":false,"kind":"runtime","optional":false},{"id":7260817574,"package_name":"sidetrack","ecosystem":"pypi","requirements":"==2.0.0","direct":false,"kind":"runtime","optional":false},{"id":7260817575,"package_name":"six","ecosystem":"pypi","requirements":"==1.16.0","direct":false,"kind":"runtime","optional":false},{"id":7260817576,"package_name":"sniffio","ecosystem":"pypi","requirements":"==1.2.0","direct":false,"kind":"runtime","optional":false},{"id":7260817577,"package_name":"stringdist","ecosystem":"pypi","requirements":"==1.0.9","direct":false,"kind":"runtime","optional":false},{"id":7260817578,"package_name":"textdistance","ecosystem":"pypi","requirements":"==4.2.2","direct":false,"kind":"runtime","optional":false},{"id":7260817579,"package_name":"tldextract","ecosystem":"pypi","requirements":"==3.0.2","direct":false,"kind":"runtime","optional":false},{"id":7260817580,"package_name":"tomli","ecosystem":"pypi","requirements":"==2.0.1","direct":false,"kind":"runtime","optional":false},{"id":7260817581,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"==3.10.0.2","direct":false,"kind":"runtime","optional":false},{"id":7260817582,"package_name":"tzdata","ecosystem":"pypi","requirements":"==2021.5","direct":false,"kind":"runtime","optional":false},{"id":7260817583,"package_name":"tzlocal","ecosystem":"pypi","requirements":"==4.1","direct":false,"kind":"runtime","optional":false},{"id":7260817584,"package_name":"uritemplate","ecosystem":"pypi","requirements":"==3.0.1","direct":false,"kind":"runtime","optional":false},{"id":7260817585,"package_name":"urllib3","ecosystem":"pypi","requirements":"==1.26.5","direct":false,"kind":"runtime","optional":false},{"id":7260817586,"package_name":"validator-collection","ecosystem":"pypi","requirements":"==1.5.0","direct":false,"kind":"runtime","optional":false},{"id":7260817587,"package_name":"wheel","ecosystem":"pypi","requirements":"==0.37.1","direct":false,"kind":"runtime","optional":false},{"id":7260817588,"package_name":"attrs","ecosystem":"pypi","requirements":"==21.4.0","direct":false,"kind":"develop","optional":false},{"id":7260817589,"package_name":"iniconfig","ecosystem":"pypi","requirements":"==1.1.1","direct":false,"kind":"develop","optional":false},{"id":7260817590,"package_name":"packaging","ecosystem":"pypi","requirements":"==21.3","direct":false,"kind":"develop","optional":false},{"id":7260817591,"package_name":"pluggy","ecosystem":"pypi","requirements":"==1.0.0","direct":false,"kind":"develop","optional":false},{"id":7260817592,"package_name":"py","ecosystem":"pypi","requirements":"==1.11.0","direct":false,"kind":"develop","optional":false},{"id":7260817593,"package_name":"pyparsing","ecosystem":"pypi","requirements":"==3.0.7","direct":false,"kind":"develop","optional":false},{"id":7260817594,"package_name":"pytest","ecosystem":"pypi","requirements":"==7.1.0","direct":false,"kind":"develop","optional":false},{"id":7260817595,"package_name":"pytest-mock","ecosystem":"pypi","requirements":"==3.7.0","direct":false,"kind":"develop","optional":false},{"id":7260817596,"package_name":"tomli","ecosystem":"pypi","requirements":"==2.0.1","direct":false,"kind":"develop","optional":false}]}],"score":11.787522297873354,"created_at":"2025-09-04T15:50:46.429Z","updated_at":"2025-11-04T15:52:47.999Z","avatar_url":"https://github.com/caltechlibrary.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":165,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["mesh","interactive","book","hacking"],"project_url":"https://science.ecosyste.ms/api/v1/projects/15479","html_url":"https://science.ecosyste.ms/projects/15479"}